Мы собираемся переместить около 20 баз данных, работающих на одном экземпляре sql 2000, в среду sql 2008 r2 с зеркальным отображением базы данных.
Я ищу инструмент или скрипты, которые помогут мне легко управлять преобразованием и управлением этими 20 дБ в этой новой зеркальной среде. Есть много шагов в настройке каждой БД, и я хочу максимально автоматизировать.
Изменить: вот шаги, которые я делал вручную:
Мне нравится иметь возможность написать сценарий или иметь инструмент, который сделает это за меня. Спасибо! Павел
Я создал серию командных файлов и сценариев SQL, чтобы выполнить следующие шаги. Я включил только сценарии для зеркалирования, но другие сценарии SQL, на которые есть ссылки, являются довольно простыми командами SQL (кроме сценария восстановления базы данных, который довольно сложен из-за того, как я его реализовал), и их создание даст вам возможность для изменения переменных режима SQLCMD. Если вы хотите отправить мне прямое сообщение в твиттере (@jcumberland) со своим адресом электронной почты, я могу отправить вам полный набор скриптов. Я также удалил полные пути в именах файлов.
/*------------------------------------------------------*/ -- REPLACE THESE VALUES /*------------------------------------------------------*/ /*------------------------------------------------------*/ -- BATCH FILE 1, CALLS UTILITY BATCH FILE /*------------------------------------------------------*/ @echo off set PRIMARYHOST= set MIRRORHOST= set INST= set DRIVE= set DRTARGETDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\" set LOGDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\" set PORT= set PRIMARYINST=%PRIMARYHOST%\%INST% set MIRRORINST=%MIRRORHOST%\%INST% @echo on call drdbsetup.bat %PRIMARYHOST% %MIRRORHOST% %PRIMARYINST% %MIRRORINST% %DRIVE% %DRTARGETDIR% %PORT% %LOGDIR% pause /*------------------------------------------------------*/ -- BATCH FILE 2 - CALLS THE SQL SCRIPTS /*------------------------------------------------------*/ rem -- set recovery mode to full sqlcmd /E /S%3 -i SetRecoveryMode.sql -v DATABASE="%8" rem -- remove mirroring sqlcmd /E /S%3 -i MirroringRemove.sql -v DATABASE="%8" sqlcmd /E /S%4 -i MirroringRemoveMirror.sql -v DATABASE="%8" rem -- full backup sqlcmd /E /S%3 -i BackupDatabaseFull.sql -v BACKUPPATH="%5:\" -v DATABASE=%8 rem -- log backup sqlcmd /E /S%3 -i BackupDatabaseLog.sql -v BACKUPPATH="%5:\" -v DATABASE=%8 rem -- copy backup files to mirror copy \\%1\%5$\*.bak %6 /y copy \\%1\%5$\*.trn %6 /y rem -- remove backup files from primary del \\%1\%5$\*.bak del \\%1\%5$\*.trn rem -- restore database from backup directory sqlcmd /E /S%4 -i RestoreDatabase.sql -v BKDIR=%6 -v DATADIR=%6 -v LOGDIR=%9 rem -- restore database log sqlcmd /E /S%4 -i RestoreLog.sql -v BACKUPPATH=%6 -v DATABASE=%8 rem -- remove backup files from mirror del %6\*.bak del %6\*.trn rem -- set up mirroring sqlcmd /E /S%4 -i MirroringSetup.sql -v PRINCIPAL="%3" -v MIRROR="%4" -v PRINCIPAL_DNS="%1." -v MIRROR_DNS="%2.yourdomain.local" -v DATABASE_NAME="%8" -v PORT=%7 /*------------------------------------------------------*/ -- MirroringSetup.sql /*------------------------------------------------------*/ /*-----------------------------------------------------*/ -- run on principal /*-----------------------------------------------------*/ :connect $(PRINCIPAL) GO -- creates endpoint if not exists (select * from sys.endpoints where name = 'Mirroring') begin CREATE ENDPOINT Mirroring AUTHORIZATION [] STATE = STARTED AS TCP ( LISTENER_PORT = $(PORT) ,LISTENER_IP = ALL ) FOR DATA_MIRRORING ( ROLE = PARTNER ,AUTHENTICATION = WINDOWS NEGOTIATE ,ENCRYPTION = REQUIRED ALGORITHM RC4 ) end go /*-----------------------------------------------------*/ -- run on mirror /*-----------------------------------------------------*/ :connect $(MIRROR) GO -- creates endpoint if not exists (select * from sys.endpoints where name = 'Mirroring') begin CREATE ENDPOINT Mirroring AUTHORIZATION [] STATE = STARTED AS TCP ( LISTENER_PORT = $(PORT) ,LISTENER_IP = ALL ) FOR DATA_MIRRORING ( ROLE = PARTNER ,AUTHENTICATION = WINDOWS NEGOTIATE ,ENCRYPTION = REQUIRED ALGORITHM RC4 ) end go -- Sets up mirror partnership ALTER DATABASE [$(DATABASE_NAME)] SET PARTNER = N'TCP://$(PRINCIPAL_DNS):$(PORT)' go -- Removes mirror monitoring if exists (select * from msdb..sysjobs where [name] ='Database Mirroring Monitor Job') begin EXEC sp_dbmmonitordropmonitoring end go -- Sets up mirror monitoring EXEC sys.sp_dbmmonitoraddmonitoring -- default is 1 minute go /*-----------------------------------------------------*/ -- run on principal /*-----------------------------------------------------*/ :connect $(PRINCIPAL) GO -- Sets up mirror partnership ALTER DATABASE [$(DATABASE_NAME)] SET PARTNER = N'TCP://$(MIRROR_DNS):$(PORT)' go -- Removes mirror monitoring if exists (select * from msdb..sysjobs where [name] ='Database Mirroring Monitor Job') begin EXEC sp_dbmmonitordropmonitoring end go -- Sets up mirror monitoring EXEC sys.sp_dbmmonitoraddmonitoring -- default is 1 minute go /*------------------------------------------------------*/ -- DRMirroringRemove.sql /*------------------------------------------------------*/ if exists ( select * from sys.database_mirroring where db_name(database_id) = '$(DATABASE)' and mirroring_guid is not null ) begin ALTER DATABASE [$(DATABASE)] SET PARTNER OFF end go WAITFOR DELAY '00:00:10' go /*------------------------------------------------------*/ -- DRMirroringRemoveMirror.sql /*------------------------------------------------------*/ if exists ( select * from sys.database_mirroring where db_name(database_id) = '$(DATABASE)' and mirroring_guid is not null ) begin ALTER DATABASE [$(DATABASE)] SET PARTNER OFF end go WAITFOR DELAY '00:00:10' go DROP DATABASE [$(DATABASE)] go
как насчет встроенного Монитор зеркального отображения базы данных?