Abonnementlatenz

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

Dieser Monitor überprüft die Latenz für Befehle in der Verteilungsdatenbank, die auf ihre Übermittlung an Abonnenten warten.

Knowledge Base article:

Zusammenfassung

Dieser Monitor erfasst Informationen ähnlich wie der Replikationsmonitor, der die ausstehenden Befehle auf der Registerkarte "Nicht verteilte Befehle" zusammen mit der geschätzten Zeit für die Übermittlung dieser Befehle anzeigt. Wenn die geschätzte Zeit länger als die in einem Schwellenwertzeitraum angegebene Zeit ist, wird eine Benachrichtigung ausgelöst, um die Informationen anzuzeigen.

http://msdn.microsoft.com/library/ms183374.aspx

Ursachen

Der Verteilungs-Agent wurde ggf. beendet.

Ggf. ist eine große Menge ausstehender Transaktionen mit zahlreichen Befehlen, für die ein Commit ausgeführt wurde, für die Verlegerdatenbank vorhanden, die in die Verteilungsdatenbank repliziert werden.

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

Lösungen

Wenn sowohl "-MaxDeliveredTransactions" als auch "-Continuous" angegeben wird, übermittelt der Verteilungs-Agent die angegebene Anzahl von Transaktionen und wird dann beendet (obwohl "-Continuous" angegeben wird). Sie müssen den Verteilungs-Agent neu starten, nachdem der Auftrag abgeschlossen wurde.

Wenn die Benachrichtigung aufgrund eines großen Transaktionsvolumens in der Verlegerdatenbank erfolgt, werten Sie die geschätzte Übermittlungszeit aus. Initialisieren Sie das Abonnement ggf. erneut, wenn die geschätzte Übermittlungszeit länger als das Erstellen und Anwenden einer Momentaufnahme ist.

Wenn für den Verteilungs-Agent Leistungsprobleme beim Lesen der Verteilungsdatenbank auftreten, führen Sie die Aktualisierung der Statistiken mit der Option "Fullscan" für die Verteilungstabellen aus.

Wenn für den Verteilungs-Agent Leistungsprobleme beim Schreiben in den Abonnenten auftreten, überprüfen Sie Blockierungen oder Ressourcenwartevorgänge für die Abonnentendatenbank, und beheben Sie diese.

Weitere

Testen Sie, ob das Ändern der unten genannten Parameterwerte die Leistung des Verteilungs-Agents verbessern kann:

CommitBatchSize

Die Anzahl der Transaktionen die an den Abonnenten ausgegeben werden müssen, bevor eine COMMIT-Anweisung ausgegeben wird. Der Standardwert ist 100.

QueryTimeOut

Die Anzahl von Sekunden, bevor ein Timeout der Abfrage erfolgt. Der Standardwert sind 1.800 Sekunden.

SubscriptionStreams

Die Anzahl der Verbindungen, die pro Verteilungs-Agent zum parallelen Anwenden von Änderungsbatches auf einen Abonnenten zulässig sind. Für einen SQL Server-Verleger wird ein Wertebereich von 1 bis 64 unterstützt.

Extern

https://msdn.microsoft.com/library/ms173804.aspx)

Ü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

Synchronisierungszeit

Synchronisierungszeit

 

Schwellenwert

Schwellenwert

60

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.2012.Replication.Subscription
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2012.Replication.MonitorType.SubscriptionLongEstimatedTime
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL2012-Replikation: Hohe Latenz wurde für Befehle in der Verteilungsdatenbank für das Abonnement ermittelt.
Das Abonnement "{0}" hat eine lang geschätzte Zeit für ausstehende Befehle ermittelt, die auf ihre Anwendung warten.
Geschätzte Zeit: {1}s
RunAsMicrosoft.SQLServer.Replication.Monitoring.RunAs.Monitor

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2012.Replication.Monitor.SubscriptionLongEstimatedTimeMonitor" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2012.Replication.Subscription" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.Replication.MonitorType.SubscriptionLongEstimatedTime" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.Replication.Monitor.SubscriptionLongEstimatedTime.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='EstimatedTime']$</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>
<ReplicationType>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/ReplicationType$</ReplicationType>
<EstimatedTimeSecondsThreshold>60</EstimatedTimeSecondsThreshold>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>