Monitoraggio della percentuale di sottoscrizioni scadute
Misura la percentuale di sottoscrizioni scadute.
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.
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.
Per altre informazioni sulla gestione della scadenza delle sottoscrizioni, vedere:
http://technet.microsoft.com/library/ms151188.aspx
Nome | Descrizione | Valore predefinito |
Abilitato | Abilita o disabilita il flusso di lavoro | Sì |
Soglia di errore | Soglia di errore | 10 |
Genera avvisi | Definisce se il flusso di lavoro genera un avviso | Sì |
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 |
Target | Microsoft.SQLServer.2014.Replication.Distributor | ||
Parent Monitor | System.Health.ConfigurationState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2014.Replication.MonitorType.DistributorPercentOfDeactivatedSubscriptions | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor |
<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>