Данный монитор проверяет задержку для команд в базе данных распространения, ожидающих доставку подписчикам.
Этот монитор собирает данные аналогично монитору репликации, который отображает ожидающие команды, на вкладке нераспространенных команд вместе с оценкой времени доставки этих команд. Если оценка выше, чем пороговый период, создается оповещение с данными об этом.
http://msdn.microsoft.com/library/ms183374.aspx
Агент распространителя может быть остановлен.
Может присутствовать много ожидающих транзакций с командами, зафиксированными в базе данных издателя и реплицированными в базе данных распространения.
Агент распространения может испытывать проблемы с производительностью при чтении из базы данных распространения или записи в базу данных подписчика.
Если параметры -MaxDeliveredTransactions и -Continuous указаны одновременно, агент распространения доставляет указанное число транзакций и останавливается (невзирая на -Continuous). После завершения задания агент распространения следует перезапустить.
Если оповещение создано вследствие наличия большого объема транзакций в базе данных издателя, оцените ориентировочное время доставки. Попробуйте повторно инициализировать подписку, если оценка времени доставки превышает время создания и применения снимка.
Если в агенте распространения возникают проблемы производительности при чтении из базы данных распространения, выполните обновление статистики с полным сканированием в базе данных распространения.
Если агент распространения испытывает проблемы с производительностью при записи в подписчик, найдите и устраните все блокировки и ожидания ресурсов в базе данных подписчика.
Попробуйте изменить значение указанных ниже параметров. Это может повысить производительность агента распространения.
CommitBatchSize
Число транзакций, создаваемых для подписчика, перед выполнением оператора COMMIT. Значение по умолчанию — 100.
QueryTimeOut
Время ожидания выполнения запроса в секундах. Значение по умолчанию — 1800 секунд.
SubscriptionStreams
Число подключений, разрешенных для каждого агента распространения при параллельном применении пакетов изменений к подписчику. Для издателя SQL Server поддерживается диапазон значений от 1 до 64.
https://msdn.microsoft.com/library/ms173804.aspx)
Имя | Описание | Значение по умолчанию |
Приоритет предупреждения | Определяет приоритет предупреждения. | Обычные |
Серьезность предупреждения | Определяет серьезность предупреждения. | Предупреждение |
Включено | Включает или отключает рабочий процесс. | Да |
Создает предупреждения | Определяет, создает ли рабочий процесс предупреждения. | Да |
Интервал (секунды) | Повторяющийся интервал времени в секундах, по истечении которого запускается рабочий процесс. | 300 |
Время синхронизации | Время синхронизации |
|
Порог | Порог | 60 |
Время ожидания (секунды) | Определяет время, в течение которого возможно выполнение рабочего процесса перед закрытием и пометкой как сбойный. | 300 |
Время ожидания для подключения к базе данных (секунды) | Рабочий процесс завершится ошибкой и зарегистрирует событие, если он не сможет получить доступ к базе данных за указанный промежуток времени. | 15 |
Target | Microsoft.SQLServer.2012.Replication.Subscription | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2012.Replication.MonitorType.SubscriptionLongEstimatedTime | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor |
<UnitMonitor ID="Microsoft.SQLServer.2012.Replication.Monitor.SubscriptionLongEstimatedTimeMonitor" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2012.Replication.Subscription" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.Replication.MonitorType.SubscriptionLongEstimatedTime" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.Replication.Monitor.SubscriptionLongEstimatedTime.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='EstimatedTime']$</AlertParameter2>
</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.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>
<ReplicationType>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/ReplicationType$</ReplicationType>
<EstimatedTimeSecondsThreshold>60</EstimatedTimeSecondsThreshold>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>