Несинхронизированные подписки в распространителе

Microsoft.SQLServer.2016.Replication.Monitor.UnsyncSubscriptions (UnitMonitor)

Этот монитор обнаруживает несинхронизированные подписки для определенных распространителей.

Knowledge Base article:

Сводка

Этот монитор обнаруживает несинхронизированные подписки для определенного распространителя.

Если число несинхронизированных подписок превысит пороговое значение, создается предупреждение следующего формата:

Распространитель (имя: "{0}", сервер: "{1}") обнаружил несинхронизированные подписки: {2}.

Причины

Чаще всего проблема вызвана тем, что агент распространителя не запущен или испытывает проблемы с производительностью.

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

Убедитесь, что агент распространителя запущен.

Выполните обновление статистики с полным сканированием таблиц в базе данных распространения.

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

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

Имя

Описание

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

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

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

Обычные

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

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

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

Включено

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

Да

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

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

Да

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

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

300

Число выборок

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

12

Порог для подписок

Порог для подписок

0

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

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

 

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

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

300

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

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

15

Пороговое число неработоспособных подписок

Пороговое число неработоспособных подписок

0

Element properties:

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

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2016.Replication.Monitor.UnsyncSubscriptions" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2016.Replication.Distributor" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2016.Replication.MonitorType.DistributorUnsyncSubscriptions" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.Replication.Monitor.DistributorUnsyncSubscriptions.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericDistributor']/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericDistributor']/ConnectionString$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='DistributorUnsyncSubscriptions']$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='Message']$</AlertParameter4>
</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.GenericDistributor']/ConnectionString$</ConnectionString>
<ThresholdPendingCommandForSubscription>0</ThresholdPendingCommandForSubscription>
<ThresholdUnhealthySubscriptionsCount>0</ThresholdUnhealthySubscriptionsCount>
<NumSamples>12</NumSamples>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>