Ausstehende Befehle des Abonnements

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

Ausstehende Befehle für den Verteiler für ein bestimmtes Abonnement warten auf ihre Übermittlung.

Knowledge Base article:

Zusammenfassung

Eine große Anzahl von Befehlen in der Verteilungsdatenbank wurde nicht an den ausgewählten Abonnenten übermittelt.

Der Monitor erfasst diese Informationen und zeigt sie dem Benutzer an. Die Daten können auf die gleiche Weise wie vom Replikationsmonitor abgerufen werden.

Ursachen

Der Verteilungs-Agent wurde ggf. beendet.

Für große Transaktionen mit zahlreichen Befehlen wurde für die Verlegerdatenbank ein Commit ausgeführt, und sie wurden in die Verteilungsdatenbank repliziert.

Für den Verteilungs-Agent sind ggf. Leistungsprobleme beim Lesen aus der Verteilungsdatenbank oder beim Schreiben in die Abonnentendatenbank aufgetreten.

Lösungen

Beheben Sie alle Probleme, wenn der Verteilungs-Agent beendet wurde, und starten Sie den Agent dann neu.

Wenn die Benachrichtigung aufgrund großer Transaktionen in der Verlegerdatenbank erfolgt, werten Sie die geschätzte Übermittlungszeit aus. Initialisieren Sie das Abonnement ggf. erneut.

Wenn für den Verteilungs-Agent Leistungsprobleme beim Lesen aus der Verteilungsdatenbank auftreten, führen Sie die Aktualisierung der Statistiken mit der Option "Fullscan" für die Verteilungstabellen aus. Wenn die Leistungsprobleme beim Schreiben in den Abonnenten auftreten, überprüfen und beheben Sie alle Blockierungen oder Ressourcenwartevorgänge.

Überschreibbare Parameter

Name

Beschreibung

Standardwert

Warnungspriorität

Definiert die Warnungspriorität.

Normal

Warnungsschweregrad

Definiert den Warnungsschweregrad.

Warnung

Aktiviert

Aktiviert oder deaktiviert den Workflow.

Ja

Generiert Benachrichtigungen.

Definiert, ob der Workflow eine Warnung generiert.

Ja

Intervall (Sekunden)

Das periodische Intervall in Sekunden, in dem der Workflow ausgeführt werden soll.

300

Anzahl der Beispiele

Gibt an, wie oft ein gemessener Wert einen Schwellenwert verletzen soll, bevor der Status geändert wird.

6

Synchronisierungszeit

Synchronisierungszeit

 

Schwellenwert

Schwellenwert

20

Timeout (Sekunden)

Gibt die Zeit an, die der Workflow ausgeführt werden darf, bevor er geschlossen und als fehlgeschlagen markiert wird.

300

Timeout für Datenbankverbindung (Sekunden)

Es tritt ein Fehler beim Workflow auf, und ein Ereignis wird registriert, wenn der Workflow nicht innerhalb des angegebenen Zeitraums auf die Datenbank zugreifen kann.

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
MSSQL2008-Replikation: Eine große Anzahl von Befehlen in der Verteilungsdatenbank wartet auf ihre Anwendung.
Das Abonnement "{0}" hat eine große Anzahl von Befehlen ermittelt, die auf ihre Anwendung warten.
Anzahl der Befehle: {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>