Percentual de Assinaturas Expiradas

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

Monitoramento de Percentual de Assinaturas Expiradas

Knowledge Base article:

Resumo

Mede o percentual de assinaturas expiradas.

Causas

Uma assinatura irá expirar se não tiver sido sincronizada dentro do período de retenção especificado.

Para replicação transacional, se uma assinatura não tiver sido sincronizada dentro do período de retenção de publicação, a assinatura irá expirar e será removida pelo trabalho de limpeza da assinatura expirada executado no Publicador.

Para replicação de mesclagem, os parâmetros @retention e @retention_period_unit de sp_addmergepublication são usados para determinar o período de retenção. Uma assinatura expira apenas se a assinatura não tiver sincronizado com sucesso no período de retenção, e houver alteração de dados na partição do assinante.

Resoluções

Para replicação transacional, a assinatura deve ser recriada e sincronizada. Se uma assinatura push expirar, será completamente removida, mas isso não ocorrerá com assinaturas push. Assinaturas Pull devem ser limpadas no Assinante.

Quando uma assinatura de mesclagem expirar, os metadados para a assinatura são removidos. A assinatura pode ser reinicializada para dobrar o período de retenção desde a última sincronização bem sucedida. Após passar o valor dobrado do período de retenção, será completamente removida e deve ser recriada e sincronizada. A assinatura é removida automaticamente para assinaturas push pelo trabalho de limpeza da assinatura Expirada. Assinaturas pull não são excluídas e devem ser limpadas no assinante.

Pode ser que o período de retenção precise ser ajustado para permitir uma duração ampliada entre sincronizações de assinante. Esteja ciente de que, ao ampliar esse valor, consequentemente a quantidade de dados de replicação também crescerá, com potencial de impacto negativo no desempenho de replicação.

Externo

Mais informações sobre o gerenciamento de expiração de assinatura podem ser encontradas no seguinte local:

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

Parâmetros Substituíveis

Nome

Descrição

Valor Padrão

Habilitado

Habilita ou desabilita o fluxo de trabalho

Sim

Limite de erros

Limite de erros

10

Gera alertas

Define se o fluxo de trabalho gera um Alerta

Sim

Intervalo (segundos)

O intervalo de tempo recorrente em segundos no qual executa-se o fluxo de trabalho.

300

Tempo limite (segundos)

Tempo limite (segundos)

300

Tempo de Sincronização

Tempo de Sincronização

 

Limite de alerta

Limite de alerta

0

Element properties:

TargetMicrosoft.SQLServer.2014.Replication.Distributor
Parent MonitorSystem.Health.ConfigurationState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2014.Replication.MonitorType.DistributorPercentOfDeactivatedSubscriptions
RemotableTrue
AccessibilityPublic
Alert Message
Replicação do MSSQL2014: Uma alta porcentagem de assinaturas expiradas foi detectada no Distribuidor.
O Distribuidor (Nome: '{0}', Servidor: '{1}') detectou uma alta porcentagem de assinaturas expiradas.
Porcentagem de assinaturas expiradas: {2}\%
Assinaturas:
{3}
RunAsMicrosoft.SQLServer.Replication.Monitoring.RunAs.Monitor

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2014.Replication.Monitor.PercentOfExpiredSubscriptions" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2014.Replication.Distributor" ParentMonitorID="Health!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2014.Replication.MonitorType.DistributorPercentOfDeactivatedSubscriptions" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.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>