Este monitoramento verifica se há assinaturas inativas para alguma publicação.
Assinaturas podem ser desativadas ou podem expirar se não forem sincronizadas dentro de um período de retenção especificado. As ações que ocorrem dependem do tipo de replicação e o período de retenção excedido.
A sincronização da Assinatura não foi bem sucedida dentro do período de retenção.
Transacional:
Se uma assinatura não for sincronizada dentro do período máximo de retenção da distribuição (padrão de 72 horas) e houver alterações no banco de dados de distribuição que não tiverem sido entregues ao Assinante, a assinatura será marcada como desativada pelo trabalho de limpeza de Distribuição executado no Distribuidor. A assinatura deve ser reinicializada.
Mesclagem:
Se uma publicação tiver um período de retenção de 14 dias, uma assinatura poderá expirar se não tiver sido sincronizada dentro de 14 dias. Se o Publicador está executando o SQL Server 2005 ou uma versão mais recente e o agente para a assinatura for do SQL Server 2005 ou uma versão mais recente, uma assinatura irá expirar apenas se não houver alteração aos dados na partição daquela assinatura. Por exemplo, na hipótese em que um Assinante receba dados de clientes apenas para clientes da Alemanha. Se o período de retenção for configurado como 14 dias, a assinatura expira no dia 14 apenas se houver alterações nos dados dos clientes da Alemanha nos últimos 14 dias.
Verifique se o agente de Distribuição/Mesclagem falhou com um erro. Verifique o histórico de Trabalho e obtenha mais detalhes.
Para assinaturas que se tornaram inativas, verifique a tabela Msrepl_errors no banco de dados de Distribuição por erros. Repare o erro e reinicialize a Assinatura.
Se não houver erros para replicação transacional, verifique a tabela Msrepl_errors para o que causou a inatividade da assinatura. Se não houver erros para replicação de Mesclagem, verifique a tabela msmerge_history para o que causou a inatividade da Assinatura.
Nome | Descrição | Valor Padrão |
Habilitado | Habilita ou desabilita o fluxo de trabalho | Sim |
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. | 900 |
Tempo limite (segundos) | Tempo limite (segundos) | 300 |
Tempo de Sincronização | Tempo de Sincronização |
|
Target | Microsoft.SQLServer.2014.Replication.Publisher | ||
Parent Monitor | System.Health.ConfigurationState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2014.Replication.MonitorType.PublisherSubscriptionsMonitor | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor |
<UnitMonitor ID="Microsoft.SQLServer.2014.Replication.Monitor.PublisherSubscriptionsMonitor" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2014.Replication.Publisher" ParentMonitorID="Health!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2014.Replication.MonitorType.PublisherSubscriptionsMonitor" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.Replication.Monitor.PublisherSubscriptions.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/ConnectionString$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='Message']$</AlertParameter3>
</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.GenericPublisher']/Distributor$</ConnectionString>
<DistributorDbName>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/DistributorDatabaseName$</DistributorDbName>
<PublisherServerName>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/ConnectionString$</PublisherServerName>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>