¿Herramientas para administrar la duplicación de bases de datos SQL 2008?

¿Herramientas para administrar la duplicación de bases de datos SQL 2008?

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:

  1. 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.
  2. Realice una copia de seguridad de cada base de datos SQL 2000.
  3. Cópielos al servidor A.
  4. Restaure la copia de seguridad en el servidor A.
  5. Haga una copia de seguridad del servidor a, copie al servidor b, restaure allí.
  6. Ejecute el asistente "configurar seguridad" del espejo.
  7. 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?

información relacionada