Мне нужно заменить старую базу данных в нашей тестовой среде на новую копию производственной базы данных.
Тестовая среда фактически состоит из двух экземпляров тестовой базы данных на 2 разных серверах в конфигурации зеркального отображения (у нее есть зеркальное отображение, потому что производственная среда имеет зеркальное отображение, а клиент хочет, чтобы тестовая среда была такой же, как производственная).
Я думал, что это будет просто:
Но очевидно, что обруча недостаточно, чтобы перепрыгнуть через него. После дня борьбы с этим (проблемы с разрешениями, загадочные ошибки, проблемы, которые исчезнут, если вы перезапустите SSMS (серьезно), я избавлю вас от полного списка ...) Я, наконец, восстановил новую БД как по принципу, так и по зеркальные экземпляры тестовой БД.
Однако где-то в процессе SQL Server отказался от параметров конфигурации зеркального отображения, поэтому я щелкнул правой кнопкой мыши по принципу, выбрал зеркальное отображение и прошел через мастер безопасности. Когда я щелкнул «Готово» в самом конце мастера безопасности, он сработал, и я получил экран, сообщающий, что все было успешно настроено («Настройка конечных точек» - «Успешно»). Сразу после этого появляется другое окно с вопросом, хочу ли я начать зеркальное отображение, однако, нажав кнопку «Пуск» в этом окне, я получаю следующую ошибку SQL Server:
Ошибка при запуске зеркалирования.
База данных «3DSS_TEST» не настроена для зеркального отображения базы данных. (Microsoft SQL Server, ошибка: 1416)
Итак, я получаю "Зеркалирование успешно настроено!" Затем, как часть того же процесса, «зеркалирование не может начаться, потому что вы не настроили его!» :(
Любые идеи? Кто-нибудь видел это раньше или знает, как выделить более полезное сообщение об ошибке или другую информацию?
Обновление: решено
Как говорит Брайан ниже, я восстановил зеркальную базу данных с неправильным вариантом восстановления, правильный способ был:
RESTORE DATABASE [MyDb]
FROM disk = 'C:\TEmp\MyDb_LIVE_Prod_backup_2010-06-18_for_test_server.bak'
WITH
REPLACE,
NOrecovery /* This should be 'norecovery', my problem was I used 'recovery' */
Спасибо!
Ошибка 1416 часто возникает при восстановлении зеркальной базы данных. Убедитесь, что зеркальная база данных находится в состоянии восстановления (опция NORECOVERY)
Выполните приведенный ниже запрос на зеркальном сервере и проверьте состояние базы данных.
select database_id, user_access_desc, state_desc, recovery_model_desc, is_broker_enabled, log_reuse_wait_desc from sys.databases where name = 'database'
Если зеркальная база данных находится в состоянии ONLINE, вам нужно будет снова восстановить базу данных и последующие резервные копии T-Log с параметром NORECOVERY перед настройкой партнеров зеркального отображения.
Это сработало для меня хорошо:
RESTORE DATABASE [MyDb]
FROM disk = 'C:\TEmp\MyDb'
WITH
REPLACE,
NOrecovery /* */