
Vamos a trasladar unas 20 bases de datos que se encuentran en una única instancia de SQL 2000 a un entorno SQL 2008 r2 con duplicación de bases de datos.
Lo que estoy buscando es una herramienta o scripts que me ayuden a gestionar fácilmente la conversión y la gestión de esos 20 dB en este nuevo entorno reflejado. Hay muchos pasos para configurar cada base de datos y quiero automatizarlos tanto como sea posible.
Editar: Estos son los pasos que he estado siguiendo manualmente:
- Cree el mismo nombre de usuario y contraseña del antiguo servidor SQL 2000 en el nuevo servidor SQL 2008. Luego sincronice esos usuarios/contraseñas con el otro servidor SQL 2008 con los mismos SSID para que cuando hagamos la copia de seguridad y la restauración de la base de datos coincidan.
- Realice una copia de seguridad de cada base de datos SQL 2000.
- Cópielos al servidor A.
- Restaure la copia de seguridad en el servidor A.
- Haga una copia de seguridad del servidor a, copie al servidor b, restaure allí.
- Ejecute el asistente "configurar seguridad" del espejo.
- Empiece a reflejar.
Me encantaría poder escribir esto o tener una herramienta que lo haga por mí. ¡Gracias! Pablo
Respuesta1
Creé una serie de archivos por lotes y scripts SQL para realizar los pasos a continuación. Solo incluí los scripts para la duplicación, pero los otros scripts SQL a los que se hace referencia son comandos SQL bastante básicos (excepto el script de restauración de la base de datos, que es un poco complicado debido a cómo lo he implementado) y crearlos te dará una oportunidad. para cambiar las variables del modo SQLCMD. Si desea enviarme un mensaje directo en Twitter (@jcumberland) con su dirección de correo electrónico, puedo enviarle el conjunto completo de scripts. También eliminé las rutas completas de los nombres de los archivos.
- establece el modo de recuperación para la base de datos
- elimina el reflejo
- eliminar base de datos espejo
- Base de datos de respaldo
- registro de respaldo
- copias del archivo bak
- copia el archivo trn
- restaura la copia de seguridad de la base de datos
- restaura la copia de seguridad del registro
- elimina el archivo bak
- elimina el archivo trn
- configurar la duplicación entre el director y el espejo
/*------------------------------------------------ ------*/ -- REEMPLAZAR ESTOS VALORES /*------------------------------------------------ ------*/ /*------------------------------------------------ ------*/ -- ARCHIVO POR LOTE 1, LLAMA ARCHIVO POR LOTE DE UTILIDAD /*------------------------------------------------ ------*/ @eco apagado establecer PRIMARYHOST= establecer ESPEJO HOST= establecer INST= establecer CONDUCCIÓN = establecer DRTARGETDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\" establecer LOGDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\" establecer PUERTO= establecer PRIMARYINST=%PRIMARYHOST%\%INST% establecer MIRRORINST=%MIRRORHOST%\%INST% @echo encendido llame a drdbsetup.bat %PRIMARYHOST% %MIRRORHOST% %PRIMARYINST% %MIRRORINST% %DRIVE% %DRTARGETDIR% %PORT% %LOGDIR% pausa /*------------------------------------------------ ------*/ -- ARCHIVO POR LOTE 2 - LLAMA A LOS SCRIPTS SQL /*------------------------------------------------ ------*/ rem: establece el modo de recuperación al máximo sqlcmd /E /S%3 -i SetRecoveryMode.sql -v DATABASE="%8" rem: elimina la duplicación sqlcmd /E /S%3 -i MirroringRemove.sql -v DATABASE="%8" sqlcmd /E /S%4 -i DuplicaciónRemoveMirror.sql -v DATABASE="%8" rem - copia de seguridad completa sqlcmd /E /S%3 -i BackupDatabaseFull.sql -v BACKUPPATH="%5:\" -v DATABASE=%8 rem - copia de seguridad del registro sqlcmd /E /S%3 -i BackupDatabaseLog.sql -v BACKUPPATH="%5:\" -v DATABASE=%8 rem: copiar archivos de respaldo al espejo copiar \\%1\%5$\*.bak %6 /y copiar \\%1\%5$\*.trn %6 /y rem: elimina los archivos de respaldo del primario del \\%1\%5$\*.bak del \\%1\%5$\*.trn rem: restaurar la base de datos desde el directorio de respaldo sqlcmd /E /S%4 -i RestoreDatabase.sql -v BKDIR=%6 -v DATADIR=%6 -v LOGDIR=%9 rem - restaurar el registro de la base de datos sqlcmd /E /S%4 -i RestoreLog.sql -v BACKUPPATH=%6 -v BASE DE DATOS=%8 rem: elimina archivos de copia de seguridad del espejo del %6\*.bak del %6\*.trn rem - configurar la duplicación sqlcmd /E /S%4 -i MirroringSetup.sql -v PRINCIPAL="%3" -v MIRROR="%4" -v PRINCIPAL_DNS="%1." -v MIRROR_DNS="%2.tudominio.local" -v DATABASE_NAME="%8" -v PUERTO=%7 /*------------------------------------------------ ------*/ -- MirroringSetup.sql /*------------------------------------------------ ------*/ /*------------------------------------------------ -----*/ -- ejecutar en principal /*------------------------------------------------ -----*/ :conectar $(PRINCIPAL) IR -- crea punto final si no existe (seleccione * de sys.endpoints donde nombre = 'Duplicación') comenzar CREAR PUNTO FINAL AUTORIZACIÓN [] ESTADO = INICIADO COMO TCP ( OYENTE_PUERTO = $(PUERTO) , OYENTE_IP = TODOS ) PARA DATA_MIRRORING ( ROL = SOCIO , AUTENTICACIÓN = NEGOCIAR EN WINDOWS ,ENCRIPTACIÓN = ALGORITMO REQUERIDO RC4 ) fin ir /*------------------------------------------------ -----*/ - correr en el espejo /*------------------------------------------------ -----*/ :conectar $(ESPEJO) IR -- crea punto final si no existe (seleccione * de sys.endpoints donde nombre = 'Duplicación') comenzar CREAR PUNTO FINAL AUTORIZACIÓN [] ESTADO = INICIADO COMO TCP ( OYENTE_PUERTO = $(PUERTO) , OYENTE_IP = TODOS ) PARA DATA_MIRRORING ( ROL = SOCIO , AUTENTICACIÓN = NEGOCIAR EN WINDOWS ,ENCRIPTACIÓN = ALGORITMO REQUERIDO RC4 ) fin ir -- Establece una asociación espejo ALTERAR BASE DE DATOS [$(DATABASE_NAME)] ESTABLECER SOCIO = N'TCP://$(PRINCIPAL_DNS):$(PUERTO)' ir -- Elimina el monitoreo de espejo si existe (seleccione * de msdb..sysjobs donde [nombre] ='Trabajo de monitor de duplicación de base de datos') comenzar EXEC sp_dbmmonitordropmonitoring fin ir -- Configura el monitoreo de espejo EXEC sys.sp_dbmmonitoraddmonitoring: el valor predeterminado es 1 minuto ir /*------------------------------------------------ -----*/ -- ejecutar en principal /*------------------------------------------------ -----*/ :conectar $(PRINCIPAL) IR -- Establece una asociación espejo ALTERAR BASE DE DATOS [$(DATABASE_NAME)] ESTABLECER SOCIO = N'TCP://$(MIRROR_DNS):$(PUERTO)' ir -- Elimina el monitoreo de espejo si existe (seleccione * de msdb..sysjobs donde [nombre] ='Trabajo de monitor de duplicación de base de datos') comenzar EXEC sp_dbmmonitordropmonitoring fin ir -- Configura el monitoreo de espejo EXEC sys.sp_dbmmonitoraddmonitoring: el valor predeterminado es 1 minuto ir /*------------------------------------------------ ------*/ -- DRMirroringRemove.sql /*------------------------------------------------ ------*/ si existe (seleccione * de sys.database_mirroring donde db_name(database_id) = '$(DATABASE)' y mirroring_guid no es nulo) comenzar ALTERAR BASE DE DATOS [$(BASE DE DATOS)] DESACTIVAR SOCIO fin ir ESPERA DE RETRASO '00:00:10' ir /*------------------------------------------------ ------*/ --DRMirroringRemoveMirror.sql /*------------------------------------------------ ------*/ si existe (seleccione * de sys.database_mirroring donde db_name(database_id) = '$(DATABASE)' y mirroring_guid no es nulo) comenzar ALTERAR BASE DE DATOS [$(BASE DE DATOS)] DESACTIVAR SOCIO fin ir ESPERA DE RETRASO '00:00:10' ir ELIMINAR BASE DE DATOS [$(BASE DE DATOS)] ir
Respuesta2
¿Qué tal el incorporado?Monitor de duplicación de bases de datos?