Процент подписок с истекшим сроком действия

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

Монитор процента подписок с истекшим сроком действия

Knowledge Base article:

Сводка

Измеряет процент подписок с истекшим сроком действия.

Причины

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

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

При репликации слиянием для определения срока хранения используются параметры @retention и @retention_period_unit функции sp_addmergepublication. Срок действия подписки истекает только в том случае, если подписка не синхронизируется в течение срока хранения, и если в данные в разделе подписчика были внесены изменения.

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

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

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

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

Внешний

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

http://technet.microsoft.com/library/ms151188.aspx

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

Имя

Описание

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

Включено

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

Да

Порог ошибок

Порог ошибок

10

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

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

Да

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

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

300

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

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

300

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

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

 

Порог предупреждений

Порог предупреждений

0

Element properties:

TargetMicrosoft.SQLServer.2012.Replication.Distributor
Parent MonitorSystem.Health.ConfigurationState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2012.Replication.MonitorType.DistributorPercentOfDeactivatedSubscriptions
RemotableTrue
AccessibilityPublic
Alert Message
Репликация MSSQL2012: на распространителе обнаружен высокий процент просроченных подписок.
Распространитель (имя: "{0}", сервер: "{1}") обнаружил высокий процент просроченных подписок.
Процент просроченных подписок: {2}\%
Подписки:
{3}
RunAsMicrosoft.SQLServer.Replication.Monitoring.RunAs.Monitor

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2012.Replication.Monitor.PercentOfExpiredSubscriptions" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2012.Replication.Distributor" ParentMonitorID="Health!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.Replication.MonitorType.DistributorPercentOfDeactivatedSubscriptions" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.Replication.Monitor.DistributorPercentOfExpiredSubscriptions.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</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='DistributorPercentOfDeactivatedSubscriptions']$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='Message']$</AlertParameter4>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Health" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<SqlTimeout>300</SqlTimeout>
<ConnectionString>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericDistributor']/ConnectionString$</ConnectionString>
<MeasuredStateId>0</MeasuredStateId>
<WarningThreshold>0</WarningThreshold>
<ErrorThreshold>10</ErrorThreshold>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>