Stato delle sottoscrizioni per il server di pubblicazione

Microsoft.SQLServer.Replication.Windows.Monitor.PublisherSubscriptionsMonitor (UnitMonitor)

Questo monitoraggio controlla se sono presenti sottoscrizioni inattive per le pubblicazioni.

Knowledge Base article:

Riepilogo

Le sottoscrizioni possono essere disattivate o scadere se non vengono sincronizzate entro un periodo di memorizzazione specificato. Le azioni che si verificano dipendono dal tipo di replica e dal periodo di memorizzazione superato.

Cause

La sottoscrizione non è stata sincronizzata correttamente entro il periodo di memorizzazione definito.

Transazionale:

Se una sottoscrizione non è sincronizzata entro il periodo di memorizzazione per la distribuzione massimo (il valore predefinito è 72 ore) e nel database di distribuzione sono presenti modifiche che non sono state inviate al Sottoscrittore, la sottoscrizione verrà contrassegnata come disattivata dal processo di pulizia della distribuzione in esecuzione nel server di distribuzione. È necessario inizializzare di nuovo la sottoscrizione.

Merge:

Se una pubblicazione presenta un periodo di memorizzazione di 14 giorni, questa può scadere se non è stata sincronizzata entro 14 giorni. Se nel server di pubblicazione è in esecuzione SQL Server 2005 o versione successiva e l'agente per la sottoscrizione è un agente di SQL Server 2005 o versione successiva, la sottoscrizione scade solo se non sono state apportate modifiche ai dati nella partizione di quella sottoscrizione. Si supponga ad esempio che un Sottoscrittore riceva i dati dei clienti solo per i clienti in Germania. Se il periodo di memorizzazione è impostato su 14 giorni, la sottoscrizione scade il giorno 14 solo se non sono state apportate modifiche ai dati dei clienti tedeschi negli ultimi 14 giorni.

Risoluzioni

Controllare se l'esecuzione dell'agente di distribuzione/merge non è riuscita con un errore. Per informazioni dettagliate, esaminare la cronologia processo.

Per le sottoscrizioni che sono diventate inattive, verificare se sono presenti errori nella tabella Msrepl_errors del database di distribuzione. Correggere l'errore e inizializzare di nuovo la sottoscrizione.

Se non sono presenti errori per la replica transazionale, esaminare la tabella MSdistribution_history per individuare le cause dello stato di inattività della sottoscrizione. Se non sono presenti errori per la replica di tipo merge, esaminare la tabella msmerge_history per individuare le cause dello stato di inattività della sottoscrizione.

Parametri di cui è possibile eseguire l'override

Nome

Descrizione

Valore predefinito

Priorità avviso

Definisce la priorità dell'avviso.

Normale

Gravità avviso

Definisce la gravità dell'avviso.

Avviso

Abilitato

Abilita o disabilita il flusso di lavoro.

Genera avvisi

Definisce se il flusso di lavoro genera un avviso.

Intervallo (secondi)

Intervallo di tempo ricorrente in secondi in cui eseguire il flusso di lavoro.

900

Ora di sincronizzazione

Ora di sincronizzazione

 

Timeout (secondi)

Specifica il tempo di esecuzione consentito per il flusso di lavoro prima che venga chiuso e contrassegnato come non riuscito.

300

Timeout per la connessione di database (secondi)

Il flusso di lavoro avrà esito negativo e registrerà un evento se non riesce ad accedere al database durante il periodo specificato.

15

Element properties:

TargetMicrosoft.SQLServer.Replication.Windows.Publisher
Parent MonitorSystem.Health.ConfigurationState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Replication.Windows.MonitorType.PublisherSubscriptionsMonitor
RemotableTrue
AccessibilityPublic
Alert Message
Replica di MSSQL per Windows: Sono state rilevate sottoscrizioni inattive per il server di pubblicazione.
Il server di pubblicazione (nome: '{0}', server: '{1}') ha rilevato sottoscrizioni inattive.
Informazioni:
{2}
RunAsMicrosoft.SQLServer.Core.RunAs.Monitoring

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Replication.Windows.Monitor.PublisherSubscriptionsMonitor" Accessibility="Public" Enabled="true" Target="SQLReplWD!Microsoft.SQLServer.Replication.Windows.Publisher" ParentMonitorID="Health!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Replication.Windows.MonitorType.PublisherSubscriptionsMonitor" ConfirmDelivery="false" RunAs="SqlCoreLib!Microsoft.SQLServer.Core.RunAs.Monitoring">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Replication.Windows.Monitor.PublisherSubscriptions.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/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>
<MachineName>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/InstanceName$</InstanceName>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<ConnectionString>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Core.GenericPublisher']/Distributor$</ConnectionString>
<MonitoringType>$Target/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<DistributorDbName>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Core.GenericPublisher']/DistributorDatabaseName$</DistributorDbName>
<PublisherServerName>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Core.GenericPublisher']/ConnectionString$</PublisherServerName>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
<CheckMachineAndInstanceName>false</CheckMachineAndInstanceName>
</Configuration>
</UnitMonitor>