Para los DBAs y los que normalmente trabajamos con SQL Server, también ha comenzado la adopción de este lenguaje de scripting y shell de línea de comandos. Reconozco que algunos cuantos colegas no hemos llevado la vanguardia en la implementación PowerShell y a veces nos cuesta abandonar a nuestro querido T-SQL.
Comandos que nos ofrece dbatools: https://dbatools.io/commands/
Instalar el modulo de dbatools
# Instalación del modulo dbstools
Install-Module dbatools
Import-Module DBATools
Aqui dejo algunos comados utililes para la migración de servidores
# VARIABLES
$CREDDestino = Get-Credential sa
Get-DbaManagementObject
# -------------------------------------------------------------------------------------------------------------------------------
# Verificar si puede migrar las bases de datos entre los servidores.
Test-DbaMigrationConstraint -Source "SRV01088" -Destination localhost -DestinationSqlCredentia $CREDDestino
# -------------------------------------------------------------------------------------------------------------------------------
# Migra los valores de configuración de un SQL Server a otro. (EXEC sp_configure;)
# De forma predeterminada, se copian todos los valores de configuración.
# -WhatIf Si está habilitado, no se realizan acciones, pero se mostrarán mensajes informativos que explican qué sucedería si se ejecutara el comando.
Copy-DbaSpConfigure -Source "SRV02786" -Destination localhost -WhatIf
Copy-DbaSpConfigure -Source "SRV02786" -Destination localhost $CREDDestino
Copy-DbaSpConfigure -Source "SRV02786" -Destination localhost -Force -DestinationSqlCredential $CREDDestino
# Migra los inicios de sesión de los servidores SQL de origen a los de destino. Admite las versiones de SQL Server 2000 y posteriores.
Copy-DbaLogin -Source "SRV02786" -Destination localhost -Force -DestinationSqlCredential $CREDDestino
# Migra trabajos de un SQL Server a otro.
Copy-DbaAgentJob -Source "SRV02786" -Destination localhost -Force -DestinationSqlCredential $CREDDestino
# Migra perfiles de correo, cuentas, servidores de correo y configuraciones de servidor de correo de un servidor SQL a otro.
Copy-DbaDbMail -Source "SRV02786" -Destination localhost -SourceSqlCredential $CREDDestino
# Migra servidores vinculados de un servidor SQL a otro.
# Los inicios de sesión y las contraseñas del servidor vinculado también se migran.
Copy-DbaLinkedServer -Source "SRV02786" -Destination localhost -Force $CREDDestino
Get-DbaPermission -SqlInstance localhost $CREDDestino
Copy-DbaInstanceTrigger -Source "SRV02786" -Destination localhost $CREDDestino -WhatIf -Force
# -------------------------------------------------------------------------------------------------------------------------------
# Migra bases de datos de SQL Server de un SQL Server a otro.
# Todas las bases de datos migradas se establecen en Solo lectura en el origen antes de desconectar/adjuntar y hacer una copia de seguridad/restaurar.
# -SetSourceReadOnly
# -Database Sin este parametro todas las bases de datos.
#
Copy-DbaDatabase -Source "SRV02786" -Destination localhost -Database PruebaDeMigracion -BackupRestore -SharedPath \\Srv02786\studio -DestinationSqlCredential $CREDDestino
# Migra TODAS las bases de datos de SQL Server, inicios de sesión, perfiles/cuentas de correo de la base de datos, credenciales,
# objetos del Agente SQL, servidores vinculados, objetos del Servidor de administración central,
# ajustes de configuración del servidor (sp_configure), objetos de usuario en las bases de datos del sistema,
# activadores del sistema y dispositivos de copia de seguridad desde un servidor SQL a otro.
# -DetachAttach
# Si este modificador está habilitado, el método separar/copiar/adjuntar se usa para realizar migraciones de bases de datos.
# No se eliminan archivos en la Fuente. Si la conexión de destino falla, la base de datos de origen se volverá a conectar.
# Las copias de archivos se realizan a través de recursos compartidos administrativos (\server\x$\mssql) mediante BITS.
# Si se está reflejando una base de datos, el espejo se romperá antes de la migración.
Start-DbaMigration -Source "xxxxx" -Destination localhost -DetachAttach
# -------------------------------------------------------------------------------------------------------------------------------
# Backup and Restore – Database
# Restaura una base de datos de SQL Server a partir de un conjunto de archivos de copia de seguridad
Restore-DbaDatabase -SqlInstance localhost -Path \\server2\backups
# Esto restaurará la base de datos desde el archivo "C:\Temp\devops_prod_full.bak", con el nuevo nombre "DevOps_DEV"
# y almacenará los diferentes archivos físicos con el nuevo nombre. Utilizará el valor predeterminado del sistema.
# datos configurados y ubicaciones de registro.
Restore-DbaDatabase -SqlInstance localhost -Path "C:\Temp\devops_prod_full.bak" -DatabaseName "DevOps_DEV" -ReplaceDbNameInFile
# Restaura 'base de datos' a 'servidor1' y mueve los archivos a nuevas ubicaciones.
# El formato de $FileStructure HashTable es el nombre lógico del archivo como clave y la nueva ubicación como valor.
$FileStructure = @{
'database_data' = 'C:\Data\database_data.mdf'
'database_log' = 'C:\Log\database_log.ldf' }
Restore-DbaDatabase -SqlInstance localhost -Path \\server2\backups -DatabaseName database -FileMapping $FileStructure
# -------------------------------------------------------------------------------------------------------------------------------
Leave a Reply