На распространителе имеются команды, ожидающие доставки.
Команды в базе данных распространения, которые не были доставлены выбранному подписчику, можно просмотреть на вкладке "Нераспространенные команды" монитора репликации, где также указывается оценочное время доставки команд.
Агент распространителя может быть остановлен.
Увеличенный объем репликации может вызывать проблемы с производительностью.
Агент распространения может испытывать проблемы производительности при чтении из базы данных распространения или записи в базу данных подписчика.
Перезапустить агент распространителя.
Если оповещение создано вследствие наличия больших транзакций в базе данных издателя, оцените ориентировочное время доставки. Возможно, оптимальным решением в данном случае будет повторная инициализация подписки.
Если в агенте распространения возникают проблемы производительности при чтении из базы данных распространения, выполните обновление статистики с полным сканированием таблицы MSrepl_commands в базе данных распространения. Если проблемы производительности возникают при записи данных на подписчик, проверьте наличие блокировок, устраните обнаруженные блокировки и ожидание ресурсов.
Попробуйте изменить значение указанных ниже параметров. Это может повысить производительность агента распространения.
CommitBatchSize
Число транзакций, создаваемых для подписчика, перед выполнением оператора COMMIT. Значение по умолчанию — 100.
QueryTimeOut
Время ожидания выполнения запроса в секундах. Значение по умолчанию — 1800 секунд.
SubscriptionStreams
Число подключений, разрешенных для каждого агента распространения при параллельном применении пакетов изменений к подписчику. Для издателя SQL Server поддерживается диапазон значений от 1 до 64.
http://msdn.microsoft.com/library/ms183374.aspx
Имя | Описание | Значение по умолчанию |
Включено | Включает или отключает рабочий процесс | Да |
Создает предупреждения | Определяет, создает ли рабочий процесс предупреждение | Да |
Интервал (секунды) | Повторяющийся интервал времени в секундах, по истечении которого запускается рабочий процесс. | 300 |
Число примеров | Показывает, сколько раз измеряемая величина должна пересечь пороговое значение, чтобы состояние изменилось. | 6 |
Время ожидания (секунды) | Время ожидания (секунды) | 300 |
Время синхронизации | Время синхронизации |
|
Порог | Порог | 5 |
Target | Microsoft.SQLServer.2014.Replication.Distributor | ||
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.2014.Replication.MonitorType.DistributorPendingCmds | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor |
<UnitMonitor ID="Microsoft.SQLServer.2014.Replication.Monitor.DistributionDBPendingCmds" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2014.Replication.Distributor" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2014.Replication.MonitorType.DistributorPendingCmds" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.Replication.Monitor.DistributorPendingCmds.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='DistributorPendingCmds']$</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>300</SqlTimeout>
<ConnectionString>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericDistributor']/ConnectionString$</ConnectionString>
<Threshold>5</Threshold>
<NumSamples>6</NumSamples>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>