Percentuale di sottoscrizioni scadute

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

Monitoraggio della percentuale di sottoscrizioni scadute

Knowledge Base article:

Riepilogo

Misura la percentuale di sottoscrizioni scadute.

Cause

Una sottoscrizione scade se non è stata sincronizzata entro il periodo di memorizzazione specificato.

Per la replica transazionale, se una sottoscrizione non viene sincronizzata entro il periodo di memorizzazione della pubblicazione, la sottoscrizione scade e viene eliminata dal processo di pulizia delle sottoscrizioni scadute in esecuzione nel server di pubblicazione.

Per la replica di tipo merge, vengono usati i parametri @retention e @retention_period_unit della stored procedure sp_addmergepublication per definire il periodo di memorizzazione. Una sottoscrizione scade solo se non è stata sincronizzata correttamente entro il periodo di memorizzazione e se sono state apportate modifiche ai dati nella partizione del sottoscrittore.

Soluzioni

Per la replica transazionale, è necessario ricreare la sottoscrizione e sincronizzarla. Se una sottoscrizione push scade, viene rimossa completamente, al contrario di quanto avviene per le sottoscrizioni pull. Le sottoscrizioni pull devono essere eliminate tramite il processo di pulizia nel Sottoscrittore.

Quando una sottoscrizione di tipo merge scade, i metadati per la sottoscrizione vengono rimossi. È possibile inizializzare di nuovo la sottoscrizione raddoppiando il periodo di memorizzazione dall'ultima sincronizzazione con esito positivo. Dopo aver passato un valore pari al doppio del periodo di memorizzazione, viene rimossa ed è necessario crearla di nuovo e sincronizzarla. Le sottoscrizioni push vengono rimosse automaticamente dal processo di pulizia delle sottoscrizioni scadute. Le sottoscrizioni pull devono invece essere eliminate tramite il processo di pulizia nel Sottoscrittore.

Potrebbe essere necessario regolare il periodo di memorizzazione per impostare una durata più tra le sincronizzazioni del sottoscrittore. Tenere presente che se si aumenta questo valore, aumenterà anche la quantità di dati di replica con un possibile impatto negativo sulle prestazioni della replica.

Esterno

Per altre informazioni sulla gestione della scadenza delle sottoscrizioni, vedere:

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

Parametri di cui è possibile eseguire l'override

Nome

Descrizione

Valore predefinito

Abilitato

Abilita o disabilita il flusso di lavoro

Soglia di errore

Soglia di errore

10

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.

300

Timeout (secondi)

Timeout (secondi)

300

Ora di sincronizzazione

Ora di sincronizzazione

 

Soglia di avviso

Soglia di avviso

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
Replica di MSSQL2012: È stata rilevata una percentuale elevata di sottoscrizioni scadute nel server di distribuzione.
Il server di distribuzione (nome: '{0}', server: '{1}') ha rilevato una percentuale elevata di sottoscrizioni scadute.
Percentuale di sottoscrizioni scadute: {2}\%
Sottoscrizioni:
{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>