Спецификации: мы используем SQL Server 2005 с репликацией транзакций.
Наш файл MSDB .LDF недавно был поврежден, в результате чего база данных MSDB была помечена как «подозрительная». Мы прочитали кучу материалов в Интернете и узнали, что для решения этой проблемы вам нужно либо восстановить из резервной копии, либо перестроить MSDB из сценария установки sql.
Поскольку у нас нет резервной копии, мы попытались запустить сценарий установки instmsdb.sql (после удаления базы данных msdb, запустив службу сервера sql с параметрами запуска -T3806 -m -c и все такое).
Это было успешно, поэтому я планировал перестроить базу данных распределения и издателей, а затем повторно инициализировать подписчиков. Однако, когда я пытался получить доступ к чему-либо в меню Sql Server Mgmt Studio относительно репликации, я получал сообщение об отсутствии таблиц в msdb. Одна из конкретных ошибок - «недопустимый объект msdb.dbo.MSdistributordbs».
Итак, я решил, что система находится в промежуточном состоянии - таблица системы распространения создана, но требуемые таблицы, специфичные для репликации, и sps отсутствуют в базе данных msdb.
Итак, мой вопрос один из следующих:
Изменить: я попробовал еще одну вещь - я включил репликацию на сервере-подписчике, скопировал его msdb mdf и файлы журнала на «плохой» сервер и попытался их прикрепить. Однако я забыл, что базы данных будут несовместимы, так как издателем является sql server 2005, а подписчиком - sql server 2008. Вздох. Это могло сработать иначе (ну, по крайней мере, дошел до того, что я мог удалить и воссоздать репликацию).
(И, как примечание, наш «системный администратор», отвечающий за сценарии резервного копирования базы данных, не сделал резервную копию каких-либо системных баз данных. Это было исправлено. Вздох).
Вы можете прикрепить базу данных только с mdf. этот - это ссылка на системный хранимый процесс, который будет это делать, он также содержит ссылку на актуальный оператор CREATE DATABASE, который заменил этот процесс. Я не знаю, как это будет работать с системной базой данных.
Другой вариант - этот документ, в котором объясняется, как удалить репликацию с помощью системных вызовов процессов. Мне пришлось использовать его однажды, чтобы исправить реплицированную базу данных, которая сильно изменилась. Я не могу вспомнить детали, но студия управления не позволила вам удалить репликацию, потому что она не была настроена, и вы не могли создать публикацию, потому что она уже существует.
ОБНОВЛЕНИЕ: вы пробовали использовать процедуру sp_dropdistributor. Я бы попробовал это, а затем попытался бы воссоздать / настроить издателя и дистрибьютора.
Прошло много времени с тех пор, как мне приходилось использовать репликацию (и, возможно, вы пробовали это), но разве вы не можете использовать мастер, чтобы отключить базу данных издателя и распространения, а затем снова включить их?