Состояние подписок для издателя

Microsoft.SQLServer.2012.Replication.Monitor.PublisherSubscriptionsMonitor (UnitMonitor)

Данный монитор проверяет наличие неактивных подписок для любых публикаций.

Knowledge Base article:

Сводка

Подписки могут быть отключены или просрочены, если они не синхронизировались в течение указанного периода хранения. Происходящие действия будут зависеть от типа репликации и превышенного периода хранения.

Причины

Подписка не была успешно синхронизирована в течение периода хранения.

Транзакционные:

Если подписка не синхронизируется в течение максимального срока хранения для распространения (по умолчанию 72 часа) и в базу данных распространителя внесены изменения, которые не были доставлены подписчику, задание очистки распространения, выполняемое на распространителе, помечает подписку как отключенную. Необходимо повторно инициализировать подписку.

Слияние:

Если срок хранения публикации — 14 дней, она может быть просрочена, если она не синхронизировалась в течение 14 дней. Если издатель и агент используют SQL Server 2005 или более позднюю версию, то подписка будет просрочена только при наличии изменений в данных раздела подписки. Например, пусть подписчик получает клиентские данные только из Германии. Если период хранения — 14 дней, подписка будет просрочена на 14 день, только если в клиентских данных из Германии за последние 14 дней произошли изменения.

Решения неисправностей

Проверьте, нет ли у агента распространения или слияния сбоя из-за ошибки. Уточните это по журналу заданий.

У неактивных подписок проверьте наличие ошибок по таблице Msrepl_errors в базе данных распространения. Устраните ошибки и повторно инициализируйте подписку.

Если в транзакционной репликации ошибок нет, проверьте по таблице MSdistribution_history, что вызвало отключение подписки. Если в репликации слияния ошибок нет, проверьте по таблице msmerge_history, что вызвало отключение подписки.

Переопределяемые параметры

Имя

Описание

Значение по умолчанию

Приоритет предупреждения

Определяет приоритет предупреждения.

Обычные

Серьезность предупреждения

Определяет серьезность предупреждения.

Предупреждение

Включено

Включает или отключает рабочий процесс.

Да

Создает предупреждения

Определяет, создает ли рабочий процесс предупреждения.

Да

Интервал (секунды)

Повторяющийся интервал времени в секундах, по истечении которого запускается рабочий процесс.

900

Время синхронизации

Время синхронизации

 

Время ожидания (секунды)

Определяет время, в течение которого возможно выполнение рабочего процесса перед закрытием и пометкой как сбойный.

300

Время ожидания для подключения к базе данных (секунды)

Рабочий процесс завершится ошибкой и зарегистрирует событие, если он не сможет получить доступ к базе данных за указанный промежуток времени.

15

Element properties:

TargetMicrosoft.SQLServer.2012.Replication.Publisher
Parent MonitorSystem.Health.ConfigurationState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2012.Replication.MonitorType.PublisherSubscriptionsMonitor
RemotableTrue
AccessibilityPublic
Alert Message
Репликация MSSQL2012: для издателя обнаружены неактивные подписки.
Издатель (имя: "{0}", сервер: "{1}") обнаружил неактивные подписки.
Сведения:
{2}
RunAsMicrosoft.SQLServer.Replication.Monitoring.RunAs.Monitor

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2012.Replication.Monitor.PublisherSubscriptionsMonitor" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2012.Replication.Publisher" ParentMonitorID="Health!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.Replication.MonitorType.PublisherSubscriptionsMonitor" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.Replication.Monitor.PublisherSubscriptions.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/ConnectionString$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='Message']$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Health" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<SqlTimeout>15</SqlTimeout>
<ConnectionString>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/Distributor$</ConnectionString>
<DistributorDbName>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/DistributorDatabaseName$</DistributorDbName>
<PublisherServerName>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/ConnectionString$</PublisherServerName>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>