Прежде чем я начну - я не тип DBA, я тип разработчика программного обеспечения. Наш администратор баз данных не работал последнюю неделю или около того, и я пытался запустить и запустить новую нашу функцию.
Эта новая функция включала добавление пары таблиц и представлений в существующую подписку на репликацию, поэтому я добавил статьи в подписку с помощью пользовательского интерфейса в SSMS. Ничего не произошло, поэтому я попытался запустить агент моментальных снимков.
Глядя на монитор агента моментальных снимков, кажется, что на самом деле все заканчивается в течение первых 3-4 секунд после его запуска. В журнале я вижу такие вещи, как:
[0%] Activated articles for publication '[publicationname]' at the publisher.
[0%] Bulk copying snapshot data for article 'new_table_name'
[0%] Bulk copied snapshot data for article 'new_table_name' (1068 rows).
(предыдущие две строки повторяются для каждой новой таблицы)
Затем прогресс скачет от 0% до 93%:
[93%] Pre-loading meta-data of all tables in the publisher database for scripting
[93%] Pre-loading meta-data of all stored procedures in the publisher database for scripting
[93%] Pre-loading meta-data of all views in the publisher database for scripting
[93%] Pre-loading meta-data of all user-defined functions in the publisher database for scripting
[93%] Sorting article objects in the proper creation order
Затем я начинаю видеть много таких:
[93%] The published object [objectnamehere] (StoredProcedure) is dependent on the unpublished object [objectnamehere] (Table), creation of the published object at the subscriber may fail unless the dependency is satisfied ahead of time.
Но все они для вещей, которые меня не особо волнуют ... но я не уверен, что могу удалить их из публикации, ничего не сломав. Таких около 20-30 штук.
Затем агент немного работает, ничего не делая. Через 10 минут я получаю следующее:
[93%] The process is running and is waiting for a response from the server.
И затем еще два каждые 10 минут, пока не истечет время:
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Теперь похоже, что обычная репликация транзакций не работает, потому что нет хорошего текущего снимка.
Излишне говорить, что я в этом довольно глубоко, и мне ДЕЙСТВИТЕЛЬНО нужна помощь. Спасибо.
Оказалось, что у меня было еще несколько работ, которые блокировали агент моментальных снимков. Как объяснено здесь: http://www.sqlmonster.com/Uwe/Forum.aspx/sql-server-replication/8439/Timeout-error-running-snapshot-agent
Агент моментального снимка требует исключительной блокировки, поэтому время ожидания блокировки истекло. Отключение заданий и повторный запуск агента сработали (и это заняло всего ~ 5 секунд).
Попробуйте увеличить -QueryTimeOut агента.