Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server Управляемый экземпляр SQL Azure
Монитор репликации — это графическое средство, позволяющее осуществлять мониторинг топологии репликации. Доступ к тем же данным мониторинга можно получить программным способом с помощью хранимых процедур репликации Transact-SQL или объектов управления репликацией (RMO). Эти объекты позволяют программировать следующие задачи:
Наблюдение за состоянием издателей, публикаций и подписок.
Контролируйте сеансы агента слияния у одного или нескольких подписчиков.
Мониторинг команд транзакций, ожидающих выполнения на одном или нескольких подписчиках.
Установка пороговых показателей, определяющих, когда необходимо вмешательство в публикацию.
Мониторинг состояния трассировочных токенов.
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 для всех порогов, которые требуется изменить. Дополнительные сведения см. в статье Set Thresholds and Warnings in Replication Monitor.
В базе данных распространителя на распространителе выполните процедуру sp_replmonitorchangepublicationthreshold. Если требуется, укажите следующие значения.
Значение Metric_id, полученное на шаге 1, для @metric_id.
Новое значение метрики порогового значения монитора для @value.
Значение 1 в параметре @shouldalert , чтобы при достижении порога записывалось в журнал предупреждение, или 0 , если предупреждение не требуется.
Значение 1 для параметра @mode включает метрику порога мониторинга, а значение 2 отключает её.
Объекты управления репликацией (RMO)
Контролировать подписку на публикацию слияния на подписчике
Создайте соединение с подписчиком с помощью класса ServerConnection .
Создайте экземпляр класса MergeSubscriberMonitor и задайте свойства Publisher, Publication, PublisherDB, SubscriberDB для подписки, а затем задайте свойства ConnectionContext для ServerConnection , созданного в шаге 1.
Чтобы получить сведения о сеансах агента слияния для данной подписки, вызовите один из следующих методов.
GetSessionsSummary — возвращает массив объектов MergeSessionSummary со сведениями о последних пяти сеансах агента слияния. Обратите внимание на значение SessionId для всех интересующих вас сеансов.
GetSessionsSummary — возвращает массив объектов MergeSessionSummary со сведениями о сеансах агента слияния за количество часов, указанное в параметре hours (до пяти последних сеансов). Запишите значение SessionId для всех интересующих вас сеансов.
GetLastSessionSummary — возвращает объект MergeSessionSummary с информацией о последнем сеансе агента слияния. Запомните значение SessionId для этого сеанса.
GetSessionsSummaryDataSet — возвращает объект DataSet со сведениями о последних сеансах агента слияния (до пяти сеансов по одному в каждой строке). Запишите значение столбца Session_id для каждого сеанса, представляющего интерес.
GetLastSessionSummaryDataRow — возвращает объект DataRow с информацией о последнем сеансе агента слияния. Запишите значение столбца Session_id для этого сеанса.
Вызовите RefreshSessionSummary , чтобы обновить данные для объекта MergeSessionSummary , передаваемого в качестве параметра mss, или вызовите RefreshSessionSummary , чтобы обновить данные для объекта DataRow , передаваемого в качестве параметра drRefresh.
С помощью идентификатора сеанса, полученного в шаге 3, вызовите один из следующих методов для получения сведений об отдельном сеансе.
GetSessionDetails — возвращает массив объектов MergeSessionDetail для указанного SessionId.
GetSessionDetailsDataSet — возвращает объект DataSet со сведениями для указанного SessionId.
Отслеживать свойства репликации для всех публикаций у распространителя
Создайте соединение с распространителем с помощью класса ServerConnection .
Создайте экземпляр класса ReplicationMonitor.
Задайте для свойства ConnectionContext значение ServerConnection, созданное на шаге 1.
Чтобы получить свойства объекта, вызовите метод LoadProperties .
Выполните один или несколько следующих методов для получения сведений о репликации по всем издателям, использующим данный распространитель.
EnumDistributionAgents — возвращает объект DataSet со сведениями обо всех агентах распространителя на данном распространителе.
EnumErrorRecords — возвращает объект DataSet, содержащий сведения об ошибках, хранящихся у дистрибьютора.
EnumLogReaderAgents — возвращает объект DataSet, содержащий сведения обо всех агентах чтения журнала у распространителя.
EnumMergeAgents — возвращает объект DataSet, содержащий информацию обо всех агентах слияния у распространителя.
EnumMiscellaneousAgents — возвращает объект DataSet со сведениями обо всех остальных агентах репликации на данном распространителе.
EnumPublishers — возвращает объект DataSet со сведениями обо всех издателях на данном распространителе.
EnumPublishers2 — возвращает объект DataSet со списком издателей, использующих данный распространитель.
EnumQueueReaderAgents — возвращает объект DataSet, содержащий сведения обо всех агентах чтения очереди у распространителя.
EnumQueueReaderAgentSessionDetails — возвращает объект DataSet, который содержит сведения об указанном агенте чтения очереди и сеансе.
EnumQueueReaderAgentSessions — возвращает объект DataSet со сведениями сеанса об указанном агенте чтения очереди.
EnumSnapshotAgents — возвращает объект DataSet, содержащий сведения обо всех агентах моментальных снимков у распространителя.
Отслеживать свойства публикации для конкретного издателя у распространителя
Создайте соединение с распространителем с помощью класса ServerConnection .
Получите объект PublisherMonitor одним из следующих способов.
Создайте экземпляр класса PublisherMonitor. Задайте для издателя свойство Name, а затем установите для свойства ConnectionContext значение ServerConnection, созданное на шаге 1. Чтобы получить свойства объекта, вызовите метод LoadProperties . Если этот метод возвращает значение false, это означает, что было неправильно задано имя издателя или такой публикации не существует.
Из коллекции PublisherMonitorCollection , доступ к которой был получен с помощью свойства PublisherMonitors существующего объекта ReplicationMonitor .
Выполните один или несколько следующих методов, чтобы получить сведения о репликации по всем публикациям, принадлежащим данному издателю.
EnumDistributionAgentSessionDetails — возвращает объект DataSet со сведениями об указанном агенте распространителя и сеансе.
EnumDistributionAgentSessions — возвращает объект DataSet, содержащий сведения о сеансе указанного агента распространения.
EnumErrorRecords — возвращает объект DataSet с информацией журнала ошибок об указанной ошибке.
EnumLogReaderAgentSessionDetails — возвращает объект DataSet со сведениями об указанном агенте чтения журнала и сеансе.
EnumLogReaderAgentSessions — возвращает объект DataSet, содержащий информацию о сеансе для указанного агента чтения журнала.
EnumMergeAgentSessionDetails — возвращает объект DataSet со сведениями об указанном агенте слияния и сеансе.
EnumMergeAgentSessionDetails2 — возвращает объект DataSet со сведениями об указанном агенте слияния и сеансе.
EnumMergeAgentSessions — возвращает объект DataSet со сведениями сеанса об указанном агенте слияния.
EnumMergeAgentSessions2 — возвращает объект DataSet с дополнительными сведениями сеанса об указанном агенте слияния.
EnumPublications — возвращает объект DataSet со сведениями обо всех публикациях на данном распространителе.
EnumPublications2 — возвращает объект DataSet с дополнительными сведениями обо всех публикациях на данном распространителе.
EnumSnapshotAgentSessionDetails — возвращает объект DataSet со сведениями об указанном агенте моментальных снимков и сеансе.
EnumSnapshotAgentSessions — возвращает объект DataSet со сведениями сеанса об указанном агенте моментальных снимков.
EnumSubscriptions — возвращает объект DataSet со сведениями обо всех подписках на публикации на данном распространителе.
Отслеживать свойства конкретной публикации у дистрибьютора
Создайте соединение с распространителем с помощью класса ServerConnection .
Получите объект PublicationMonitor одним из следующих способов.
Создайте экземпляр класса PublicationMonitor. Задайте для публикации свойства DistributionDBName, PublisherName, PublicationDBName и Name, а для свойства ConnectionContext задайте значение ServerConnection, созданное на шаге 1. Чтобы получить свойства объекта, вызовите метод LoadProperties . Если этот метод возвращает false, то либо свойства публикации были определены неверно, либо публикация не существует.
Из коллекции PublicationMonitorCollection , доступ к которой был получен с помощью свойства PublicationMonitors существующего объекта PublisherMonitor .
Выполните один или несколько следующих методов для получения сведений о данной публикации.
EnumErrorRecords — возвращает объект DataSet с информацией журнала ошибок об указанной ошибке.
EnumLogReaderAgent — возвращает объект DataSet, содержащий информацию об агенте чтения журнала для данной публикации.
EnumMonitorThresholds — возвращает объект DataSet, который содержит информацию о пороговых значениях предупреждений монитора, установленных для этой публикации.
EnumQueueReaderAgent — возвращает объект DataSet, содержащий сведения об агенте чтения очереди, используемом данной публикацией.
EnumSnapshotAgent — возвращает объект DataSet со сведениями об агенте моментальных снимков для данной публикации.
EnumSubscriptions — возвращает объект DataSet со сведениями обо всех подписках на эту публикацию.
EnumSubscriptions2 — возвращает объект DataSet с дополнительными сведениями обо всех подписках на данную публикацию в зависимости от параметра SubscriptionResultOption.
EnumTracerTokenHistory — возвращает объект DataSet с данными задержки для указанного трассировочного токена.
EnumTracerTokens — возвращает объект DataSet со сведениями обо всех трассировочных токенах, вставленных в данную публикацию.
Для мониторинга транзакционных команд, ожидающих применения на подписчике
Создайте соединение с распространителем с помощью класса ServerConnection .
Получите объект PublicationMonitor одним из следующих способов.
Создайте экземпляр класса PublicationMonitor. Задайте для публикации свойства DistributionDBName, PublisherName, PublicationDBName и Name, а также установите для свойства ConnectionContext значение ServerConnection, созданное на шаге 1. Чтобы получить свойства объекта, вызовите метод LoadProperties . Если этот метод возвращает false, то либо свойства публикации были определены неверно, либо публикация не существует.
Из коллекции PublicationMonitorCollection , доступ к которой был получен с помощью свойства PublicationMonitors существующего объекта PublisherMonitor .
Выполните метод TransPendingCommandInfo , который возвращает объект PendingCommandInfo .
Используйте свойства этого объекта PendingCommandInfo для определения примерного количества команд, ожидающих выполнения, и необходимого времени для завершения их доставки.
Настроить пороговые значения предупреждений для публикации
Создайте соединение с распространителем с помощью класса ServerConnection .
Получите объект PublicationMonitor одним из следующих способов.
Создайте экземпляр класса PublicationMonitor. Задайте для публикации свойства DistributionDBName, PublisherName, PublicationDBName и Name, а также установите для свойства ConnectionContext значение ServerConnection, созданное на шаге 1. Чтобы получить свойства объекта, вызовите метод LoadProperties . Если этот метод возвращает false, то либо свойства публикации были определены неверно, либо публикация не существует.
Из коллекции PublicationMonitorCollection , доступ к которой был получен с помощью свойства PublicationMonitors существующего объекта PublisherMonitor .
Вызовите метод EnumMonitorThresholds . Запомните текущие пороговые значения в возвращаемом списке ArrayList объектов MonitorThreshold .
Вызовите метод ChangeMonitorThreshold . Передайте следующие параметры:
metricID — это значение Int32 , представляющее пороговую метрику из следующей таблицы.
значение Описание 1 expiration — отслеживает скорое истечение срока подписок на публикации транзакций. 2 задержка — отслеживает производительность подписок на транзакционные публикации. 4 mergeexpiration — отслеживает скорое истечение срока подписок на публикации слияния. 5 mergeslowrunduration — отслеживает длительность синхронизаций слияния при низкоскоростных соединениях (коммутируемый доступ). 6 mergefastrunduration — отслеживает длительность синхронизаций слияния по высокоскоростным соединениям (LAN). 7 mergefastrunspeed — отслеживает скорость синхронизаций слияния по высокоскоростным соединениям (LAN). 8 mergeslowrunspeed — отслеживает скорость синхронизаций слияния по соединениям с низкой пропускной способностью (с коммутируемым доступом). enable - Boolean значение, которое указывает, включен ли этот показатель для публикации.
thresholdValue — целое значение, определяющее порог.
shouldAlert — целочисленное значение, которое указывает, должен ли порог вызывать предупреждение.