Как наблюдать за репликацией программно (программирование репликации на языке Transact-SQL)
Монитор репликации – это графическое средство, позволяющее осуществлять мониторинг топологии репликации. К тем же данным наблюдения можно обращаться программным путем с помощью хранимых процедур репликации. Эти хранимые процедуры позволяют программировать следующие задачи:
Наблюдение за состоянием издателей, публикаций и подписок.
Мониторинг сеансов агентов слияния на одном или нескольких подписчиках.
Мониторинг команд транзакций, ожидающих выполнения на одном или нескольких подписчиках.
Установка пороговых показателей, определяющих, когда необходимо вмешательство в публикацию.
Мониторинг издателей, публикаций и подписок с распространителя
В базе данных распространителя на распространителе выполните процедуру sp_replmonitorhelppublisher. Будут возвращены данные наблюдения за всеми издателями, использующими этот распространитель. Чтобы ограничить результирующий набор одним издателем, задайте параметр @publisher.
В базе данных распространителя на распространителе выполните процедуру sp_replmonitorhelppublication. Будут возвращены данные наблюдения за всеми публикациями, использующими этот распространитель. Чтобы ограничить результирующий набор одним издателем, одной публикацией или одной опубликованной базой данных, задайте, соответственно, параметр @publisher, @publication или**@publisher_db**.
В базе данных распространителя на распространителе выполните процедуру sp_replmonitorhelpsubscription. Будут возвращены данные наблюдения за всеми подписками, использующими этот распространитель. Чтобы ограничить результирующий набор подписками, принадлежащими одному издателю, публикации или опубликованной базе данных, задайте, соответственно, параметр @publisher, @publication, или**@publisher_db**.
Мониторинг команд транзакций, ожидающих выполнения на подписчике
- В базе данных распространителя на распространителе выполните процедуру sp_replmonitorsubscriptionpendingcmds. Будут возвращены данные наблюдения по всем ждущим командам для всех подписок, использующих этот распространитель. Чтобы ограничить результирующий набор ждущими командами для подписок, принадлежащих одному издателю, подписчику, публикации или опубликованной базе данных, укажите, соответственно, параметр @publisher, @subscriber, @publication или @publisher_db.
Мониторинг изменений слияния, ожидающих загрузки или выгрузки
В базе данных публикации на издателе выполните процедуру sp_showpendingchanges. Это возвращает результирующий набор с информацией об изменениях, ожидающих репликации на серверы-подписчики. Чтобы ограничить результирующий набор изменениями, которые принадлежат одной публикации или статье, укажите параметр @publication или @article соответственно.
В базе данных подписки на подписчике выполните процедуру sp_showpendingchanges. Это возвращает результирующий набор с информацией об изменениях, ожидающих репликации на сервер-издатель. Чтобы ограничить результирующий набор изменениями, которые принадлежат одной публикации или статье, укажите параметр @publication или @article соответственно.
Мониторинг сеансов агента слияния
В базе данных распространителя на распространителе выполните процедуру sp_replmonitorhelpmergesession. Это возвращает данные наблюдения, включая Session_id, по всем сеансам агента слияния для всех подписок, использующих этот распространитель. Еще один способ получить Session_id – это запросить системную таблицу MSmerge_sessions.
В базе данных распространителя на распространителе выполните процедуру sp_replmonitorhelpmergesessiondetail. В параметре @session_id укажите полученное на шаге 1 значение Session_id. Будут выданы подробные сведения о сеансе.
Повторите шаг 2 для всех интересующих сеансов.
Мониторинг сеансов агента слияния для подписок по запросу с подписчика
В базе данных подписки на подписчике выполните процедуру sp_replmonitorhelpmergesession. Для данной подписки укажите @publisher, @publication и имя базы данных публикации для @publisher_db. Будут возвращены сведения о последних пяти сеансах агента слияния для этой подписки. Запомните значение Session_id для сеансов, представляющих интерес в результирующем наборе.
В базе данных подписки на подписчике выполните процедуру sp_replmonitorhelpmergesessiondetail. В параметре @session_id укажите полученное на шаге 1 значение Session_id. Будут возвращены подробные данные наблюдения за сеансом.
Повторите шаг 2 для всех интересующих сеансов.
Получение и изменение пороговых показателей мониторинга для публикации
В базе данных распространителя на распространителе выполните процедуру sp_replmonitorhelppublicationthresholds. Будут возвращены пороговые значения наблюдения за всеми публикациями, использующими этот распространитель. Чтобы ограничить результирующий набор пороговыми значениями для публикаций, принадлежащих одному издателю, одной опубликованной базе данных или одной публикации, задайте, соответственно, параметр @publisher, @publisher_db или @publication. Запомните значение Metric_id для всех порогов, которые требуется изменить. Дополнительные сведения см. в разделе Настройка пороговых значений и предупреждений в мониторе репликации.
В базе данных распространителя на распространителе выполните процедуру sp_replmonitorchangepublicationthreshold. Если требуется, укажите следующие значения:
Значение Metric_id, полученное в шаге 1, в параметре @metric_id.
Новое отслеживаемое значение порогового показателя в параметре @value.
Значение 1 в параметре @shouldalert, чтобы при достижении порога записывалось в журнал предупреждение, или 0, если предупреждение не требуется.
Значение 1 в параметре @mode, чтобы включить мониторинг порогового показателя, или 2, чтобы выключить его.