Команды, ожидающие подписки

Microsoft.SQLServer.2014.Replication.Monitor.SubscriptionPendingCmdsMonitor (UnitMonitor)

На распространителе ожидают доставки команды, предназначенные для определенной подписки.

Knowledge Base article:

Сводка

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

Монитор собирает эти сведения и показывает пользователю. Данные можно получить так же, как и в случае монитора репликации.

Причины

Агент распространителя может быть остановлен.

Большие транзакции с множеством команд, зафиксированных в базе данных издателя и реплицированных в базе данных распространения

В агенте распространения могут возникать проблемы производительности при чтении из базы данных распространения и записи в базу данных подписчика

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

Устраните все проблемы, если агент распространения остановлен, и перезапустите его.

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

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

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

Имя

Описание

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

Включено

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

Да

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

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

Да

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

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

300

Число примеров

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

6

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

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

300

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

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

 

Порог

Порог

20

Element properties:

TargetMicrosoft.SQLServer.2014.Replication.Subscription
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2014.Replication.MonitorType.SubscriptionPendingCmds
RemotableTrue
AccessibilityPublic
Alert Message
Репликация MSSQL2014: в базе данных распространения ожидает применения большое количество команд.
В подписке "{0}" обнаружено большое количество команд, ожидающих применения.
Количество команд: {1}
RunAsMicrosoft.SQLServer.Replication.Monitoring.RunAs.Monitor

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2014.Replication.Monitor.SubscriptionPendingCmdsMonitor" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2014.Replication.Subscription" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2014.Replication.MonitorType.SubscriptionPendingCmds" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.Replication.Monitor.SubscriptionPendingCmds.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription']/SubscriptionName$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='SubscriptionPendingCmds']$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Health" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<SqlTimeout>300</SqlTimeout>
<ConnectionString>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/Distributor$</ConnectionString>
<SubscriptionType>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/Type$</SubscriptionType>
<PublisherName>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/Publisher$</PublisherName>
<Subscriber>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/Subscriber$</Subscriber>
<PublisherDb>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/PublicationDatabase$</PublisherDb>
<SubscriberDb>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/SubscriptionDatabase$</SubscriberDb>
<Publication>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/PublicationName$</Publication>
<Threshold>20</Threshold>
<NumSamples>6</NumSamples>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>