Comandi in sospeso della sottoscrizione

Microsoft.SQLServer.2008.Replication.Monitor.SubscriptionPendingCmdsMonitor (UnitMonitor)

Sono presenti comandi in sospeso nel server di distribuzione per una sottoscrizione specifica in attesa di recapito.

Knowledge Base article:

Riepilogo

Un numero elevato di comandi nel database di distribuzione non è stato recapitato al Sottoscrittore selezionato.

Il monitoraggio raccoglie queste informazioni e le mostra all'utente. È possibile acquisire i dati come nel monitoraggio della replica.

Cause

L'agente di distribuzione potrebbe essere stato arrestato.

È stato eseguito il commit di transazioni di grandi dimensioni con molti comandi nel server di pubblicazione e la replica nel database di distribuzione

È possibile che l'agente di distribuzione riscontri problemi di prestazioni durante la lettura dal database di distribuzione o la scrittura nel database sottoscrittore

Soluzioni

Se l'agente di distribuzione è stato arrestato, risolvere i problemi e riavviarlo;

Se l'avviso è stato generato da transazioni di grandi dimensioni nel server di pubblicazione, valutare il tempo stimato per il recapito. È anche possibile inizializzare di nuovo la sottoscrizione.

Se l'agente di distribuzione riscontra prestazioni rallentate durante la lettura dal database di distribuzione, eseguire l'istruzione UPDATE STATISTICS con la clausola FULLSCAN sulle tabelle di distribuzione. Se i problemi di prestazioni vengono riscontrati durante la scrittura nel sottoscrittore, verificare la presenza di eventuali blocchi o attese delle risorse e risolvere i problemi.

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.

300

Numero di esempi

Indica quante volte un valore misurato deve violare una soglia prima che venga modificato lo stato.

6

Ora di sincronizzazione

Ora di sincronizzazione

 

Soglia

Soglia

20

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.2008.Replication.Subscription
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.Replication.MonitorType.SubscriptionPendingCmds
RemotableTrue
AccessibilityPublic
Alert Message
Replica di MSSQL 2008: Un numero elevato di comandi nel database di distribuzione è in attesa di applicazione.
La sottoscrizione '{0}' ha rilevato un numero elevato di comandi in attesa di applicazione.
Numero di comandi: {1}
RunAsMicrosoft.SQLServer.Replication.Monitoring.RunAs.Monitor

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.Replication.Monitor.SubscriptionPendingCmdsMonitor" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2008.Replication.Subscription" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.Replication.MonitorType.SubscriptionPendingCmds" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.Replication.Monitor.SubscriptionPendingCmds.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription']/SubscriptionName$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='SubscriptionPendingCmds']$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Health" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<SqlTimeout>15</SqlTimeout>
<ConnectionString>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/Distributor$</ConnectionString>
<SubscriptionType>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/Type$</SubscriptionType>
<PublisherName>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/Publisher$</PublisherName>
<Subscriber>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/Subscriber$</Subscriber>
<PublisherDb>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/PublicationDatabase$</PublisherDb>
<SubscriberDb>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/SubscriptionDatabase$</SubscriberDb>
<Publication>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/PublicationName$</Publication>
<Threshold>20</Threshold>
<NumSamples>6</NumSamples>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>