Si si lo sé el ritmo de publicación de este blog está siendo abrumador deberia calmarme un poco.
Un cliente se ha creado un nuevo entorno de pruebas para… bueno, hacer pruebas. Esto quiere decir que el cliente necesita replicar la instancia de producción en una nueva instancia y para ello necesita, además de copiar todas sus bases de datos, hacer lo mismo con los objetos SQL de la instancia (login, jobs, linked server etc…).
Migrar las bases de datos es algo «sencillo» que en este caso se puede hacer sin ningún problema haciendo backups y restores, pero cuando de los objetos de SQL Server puede ser un poquito más complicado debido a que estos pueden tener ciertas configuraciones especificas para la instancia.
Un claro ejemplo de esto es cuando os hablé sobre los SID de los logins.
Para estas tareas más complicadas os voy a hablar de una herramienta llamada dbatools que, literalmente, os va a ahorrar mucho tiempo de trabajo.
¿Qué es Dbatools?
DBATools es una colección de scripts de PowerShell que están diseñados para hacer la administración de SQL Server más fácil y eficiente. Estos scripts proporcionan una amplia gama de funcionalidades que abarcan desde la administración básica de bases de datos hasta tareas más avanzadas, como la migración de bases de datos, backups, restores, y la administración de logins y sus permisos.
Cómo instalar Dbatools
Instalar Dbatools es bastante sencillo. Primero, necesitas tener PowerShell instalado en tu sistema. Luego, puedes instalar DBATools utilizando PowerShell Gallery, que es el repositorio de paquetes de PowerShell. Aquí tienes los pasos para instalar DBATools:
Basicamente tienes que abrir powershell y ejecutar el siguiente comando (preguntale al tio de windows si tienes dudas):
Install-Module dbatools
Una vez que termine deberia estar listo para usarse.
Cómo migrar o copiar logins con dbatools
Nuestro cliente necesita copiar todos sus logins desde una instancia a otra. Para esto vamos a ejecutar el siguiente comando en powershell:
Copy-DbaLogin -Source InstanciaProd -Destination InstanciaTest
Esto copiará TODOS LOS LOGINS desde la instancia de producción a la instancia de test con el mismo SID y los mismos permisos. En la web oficial podreis encontar todas las variantes disponibles de este comando.
Y eso es todo. Después de que el comando haya finalizado, podreis ver un resumen de todos los logins que han sido copiados, si alguno no ha sido copiado porque ya existia o si ha habido algún error.
No dudeis en visitar la web oficial para conocer el resto de comandos, estoy seguro de que alguno os servirá para algo.
Qué hacer si aparece el error «The certificate chain was issued by an authority that is not trusted» en dbatools.
Como la voz de la experiencia puedo suponer que alguno de vosotros habeis llegado aquí porque os ha aparecido un error que dice «The certificate chain was issued by an authority that is not trusted» y no teneis ni idea de como solucionarlo.
Yo tampoco sé como solucionarlo definitivamente, pero si que he encontrado una solución temporal (lo que dure la sesión de powershell). Ejecutad el siguiente comando y luego volver a ejecutar el comando de dbatools
Set-DbatoolsInsecureConnection -SessionOnly
Esto hará funcionar dbatools sólo durante la sesión actual, por lo que tendreis que ejecutarlo de nuevo cada vez que inicies un nuevo powershell.
amigo, te agradezco el aporte, el «Set-DbatoolsInsecureConnection -SessionOnly» me sirvió mucho, me ayudó a hacer que mi script corriera
Me alegro un montón!