
Мы собираемся перенести около 20 баз данных, работающих на одном экземпляре SQL 2000, в среду SQL 2008 R2 с зеркалированием баз данных.
Я ищу инструмент или скрипты, которые помогут мне легко управлять преобразованием и управлением этими 20db в этой новой зеркальной среде. Настройка каждой базы данных состоит из множества шагов, и я хочу максимально автоматизировать.
Редактировать: Вот шаги, которые я выполнял вручную:
- Создайте те же имена пользователей и пароли со старого сервера SQL 2000 на новом сервере SQL 2008. Затем синхронизируйте этих пользователей и пароли на другом сервере SQL 2008 с теми же SSID, чтобы при резервном копировании и восстановлении базы данных они совпадали.
- Сделайте резервную копию каждой базы данных SQL 2000.
- Скопируйте их на сервер А.
- Восстановите резервную копию на сервере A.
- Резервное копирование с сервера a, копирование на сервер b, восстановление там.
- Запустите мастер настройки безопасности зеркала.
- Начните зеркалирование.
Мне бы очень хотелось иметь возможность написать скрипт или инструмент, который сделает это за меня. Спасибо! Пол
решение1
Я создал ряд пакетных файлов и скриптов SQL для выполнения следующих шагов. Я включил только скрипты для зеркалирования, но другие упомянутые скрипты SQL являются довольно простыми командами SQL (за исключением скрипта восстановления базы данных, он довольно сложен из-за того, как я его реализовал), и их создание даст вам возможность изменить переменные режима SQLCMD. Если вы хотите, напишите мне в Twitter (@jcumberland) свой адрес электронной почты, я могу отправить вам полный набор скриптов. Я также удалил полные пути в именах файлов.
- устанавливает режим восстановления для базы данных
- удаляет зеркалирование
- удалить зеркальную базу данных
- резервная база данных
- журнал резервного копирования
- копирует bak-файл
- копирует файл trn
- восстанавливает резервную копию базы данных
- восстанавливает резервную копию журнала
- удаляет bak-файл
- удаляет файл trn
- настроить зеркалирование между основным и зеркальным сервером
/*------------------------------------------------------*/ -- ЗАМЕНИТЕ ЭТИ ЗНАЧЕНИЯ /*------------------------------------------------------*/ /*------------------------------------------------------*/ -- ПАКЕТНЫЙ ФАЙЛ 1, ВЫЗЫВАЕТ ПАКЕТНЫЙ ФАЙЛ УТИЛИТЫ /*------------------------------------------------------*/ @эхо выкл. установить PRIMARYHOST= установить MIRRORHOST= установить ИНСТ= установить ПРИВОД= установить DRTARGETDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\" установить LOGDIR="%ДИСК%:\MSSQL.1\MSSQL\DATA\" установить ПОРТ= установить ПЕРВИЧНЫЙИНСТ=%ПЕРВИЧНЫЙХОСТ%\%ИНСТ% установить MIRRORINST=%MIRRORHOST%\%INST% @echo на вызов drdbsetup.bat %PRIMARYHOST% %MIRRORHOST% %PRIMARYINST% %MIRRORINST% %DRIVE% %DRTARGETDIR% %PORT% %LOGDIR% Пауза /*------------------------------------------------------*/ -- ПАКЕТНЫЙ ФАЙЛ 2 - ВЫЗЫВАЕТ СКРИПТЫ SQL /*------------------------------------------------------*/ rem -- установить режим полного восстановления sqlcmd /E /S%3 -i SetRecoveryMode.sql -v DATABASE="%8" rem -- удалить зеркалирование sqlcmd /E /S%3 -i MirroringRemove.sql -v DATABASE="%8" sqlcmd /E /S%4 -i MirroringRemoveMirror.sql -v DATABASE="%8" rem -- полная резервная копия sqlcmd /E /S%3 -i Резервная_База_ДанныхПолная.sql -v РЕЗЕРВНАЯ_БАЗА_ДАННЫХ="%5:\" -v БАЗА_ДАННЫХ=%8 rem -- резервное копирование журнала sqlcmd /E /S%3 -i Резервная_Баз_ДанныхЖурнал.sql -v РЕЗЕРВНАЯ_ПАТЕНТУРА="%5:\" -v БАЗА_ДАННЫХ=%8 rem -- копирование резервных файлов на зеркало копировать \\%1\%5$\*.bak %6 /y копировать \\%1\%5$\*.trn %6 /y rem -- удалить резервные файлы с основного дель \\%1\%5$\*.bak дель \\%1\%5$\*.trn rem -- восстановить базу данных из резервной копии sqlcmd /E /S%4 -i RestoreDatabase.sql -v BKDIR=%6 -v DATADIR=%6 -v LOGDIR=%9 rem -- восстановить журнал базы данных sqlcmd /E /S%4 -i RestoreLog.sql -v BACKUPPATH=%6 -v DATABASE=%8 rem -- удалить резервные копии файлов с зеркала дель %6\*.bak дель %6\*.trn rem -- настроить зеркалирование sqlcmd /E /S%4 -i MirroringSetup.sql -v PRINCIPAL="%3" -v MIRROR="%4" -v PRINCIPAL_DNS="%1." -v MIRROR_DNS="%2.yourdomain.local" -v ИМЯ_БАЗЫ_ДАННЫХ="%8" -v ПОРТ=%7 /*------------------------------------------------------*/ -- MirroringSetup.sql /*------------------------------------------------------*/ /*-----------------------------------------------------*/ -- работает на основе принципала /*-----------------------------------------------------*/ :подключить $(ГЛАВНЫЙ) ИДТИ -- создает конечную точку если не существует (выберите * из sys.endpoints, где имя = 'Зеркалирование') начинать СОЗДАТЬ КОНЕЧНУЮ ТОЧКУ Зеркалирование АВТОРИЗАЦИЯ [] СОСТОЯНИЕ = ЗАПУЩЕНО КАК TCP ( LISTENER_PORT = $(PORT) ,LISTENER_IP = ВСЕ ) ДЛЯ ЗЕРКАЛЬНОГО_ОТОБРАЖЕНИЯ ДАННЫХ ( РОЛЬ = ПАРТНЕР ,АУТЕНТИФИКАЦИЯ = СОГЛАСОВАНИЕ WINDOWS ,ШИФРОВАНИЕ = ТРЕБУЕМЫЙ АЛГОРИТМ RC4 ) конец идти /*-----------------------------------------------------*/ -- запустить на зеркале /*-----------------------------------------------------*/ :подключить $(ЗЕРКАЛО) ИДТИ -- создает конечную точку если не существует (выберите * из sys.endpoints, где имя = 'Зеркалирование') начинать СОЗДАТЬ КОНЕЧНУЮ ТОЧКУ Зеркалирование АВТОРИЗАЦИЯ [] СОСТОЯНИЕ = ЗАПУЩЕНО КАК TCP ( LISTENER_PORT = $(PORT) ,LISTENER_IP = ВСЕ ) ДЛЯ ЗЕРКАЛЬНОГО_ОТОБРАЖЕНИЯ ДАННЫХ ( РОЛЬ = ПАРТНЕР ,АУТЕНТИФИКАЦИЯ = СОГЛАСОВАНИЕ WINDOWS ,ШИФРОВАНИЕ = ТРЕБУЕМЫЙ АЛГОРИТМ RC4 ) конец идти -- Устанавливает зеркальное партнерство ИЗМЕНИТЬ БАЗА ДАННЫХ [$(ИМЯ_БАЗЫ_ДАННЫХ)] УСТАНОВИТЬ ПАРТНЕРА = N'TCP://$(PRINCIPAL_DNS):$(ПОРТ)' идти -- Удаляет мониторинг зеркала если существует (выберите * из msdb..sysjobs, где [name] = 'Database Mirroring Monitor Job') начинать EXEC sp_dbmmonitordropmonitoring конец идти -- Настраивает зеркальный мониторинг EXEC sys.sp_dbmmonitoraddmonitoring — по умолчанию 1 минута идти /*-----------------------------------------------------*/ -- работает на основе принципала /*-----------------------------------------------------*/ :подключить $(ГЛАВНЫЙ) ИДТИ -- Устанавливает зеркальное партнерство ИЗМЕНИТЬ БАЗА ДАННЫХ [$(ИМЯ_БАЗЫ_ДАННЫХ)] УСТАНОВИТЬ ПАРТНЕРА = N'TCP://$(MIRROR_DNS):$(ПОРТ)' идти -- Удаляет мониторинг зеркала если существует (выберите * из msdb..sysjobs, где [name] = 'Database Mirroring Monitor Job') начинать EXEC sp_dbmmonitordropmonitoring конец идти -- Настраивает зеркальный мониторинг EXEC sys.sp_dbmmonitoraddmonitoring — по умолчанию 1 минута идти /*------------------------------------------------------*/ -- DRMirroringRemove.sql /*------------------------------------------------------*/ если существует (выберите * из sys.database_mirroring, где db_name(database_id) = '$(DATABASE)' и mirroring_guid не равен null) начинать ИЗМЕНИТЬ БАЗА ДАННЫХ [$(DATABASE)] ОТКЛЮЧИТЬ ПАРТНЕРА конец идти ОЖИДАНИЕ ЗАДЕРЖКИ '00:00:10' идти /*------------------------------------------------------*/ -- DRMirroringRemoveMirror.sql /*------------------------------------------------------*/ если существует (выберите * из sys.database_mirroring, где db_name(database_id) = '$(DATABASE)' и mirroring_guid не равен null) начинать ИЗМЕНИТЬ БАЗА ДАННЫХ [$(DATABASE)] ОТКЛЮЧИТЬ ПАРТНЕРА конец идти ОЖИДАНИЕ ЗАДЕРЖКИ '00:00:10' идти УДАЛЕНИЕ БАЗЫ ДАННЫХ [$(DATABASE)] идти
решение2
как насчет встроенногоМонитор зеркалирования базы данных?