Dieser Monitor überprüft die Latenz für Befehle in der Verteilungsdatenbank, die auf eine Übermittlung an die Abonnenten warten. Beachten Sie, dass dieser Monitor für Mergeabonnements deaktiviert ist.
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 ist als die in einem Schwellenwertzeitraum angegebene Zeit, wird eine Benachrichtigung ausgelöst, um die Informationen anzuzeigen. Beachten Sie, dass dieser Monitor für Mergeabonnements deaktiviert ist.
http://msdn.microsoft.com/library/ms183374.aspx
Der Verteilungs-Agent wurde ggf. beendet.
Möglicherweise ist eine große Menge ausstehender Transaktionen mit zahlreichen Befehlen vorhanden, für die ein Commit für die Verlegerdatenbank ausgeführt wurde und die in die Verteilungsdatenbank repliziert werden.
Beim Verteilungs-Agent treten möglicherweise Leistungsprobleme beim Lesen aus der Verteilungsdatenbank oder beim Schreiben in die Abonnentendatenbank auf.
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 beim Verteilungs-Agent Leistungsprobleme beim Schreiben in den Abonnenten auftreten, suchen Sie nach Blockierungen oder Ressourcenwartevorgängen, und beheben Sie diese.
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 ist 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.
https://msdn.microsoft.com/library/ms173804.aspx)
Name | Beschreibung | Standardwert |
Warnungspriorität | Definiert die Warnungspriorität. | Normal |
Warnungsschweregrad | Definiert den Warnungsschweregrad. | Warnung |
Aktiviert | Aktiviert oder deaktiviert den Workflow. | Ja |
Generiert Warnungen | Definiert, ob der Workflow eine Warnung generiert. | Ja |
Intervall (Sekunden) | Gibt das Wiederholungsintervall in Sekunden für die Ausführung des Workflows an. | 300 |
Synchronisierungszeit | Synchronisierungszeit |
|
Schwellenwert | Schwellenwert | 60 |
Timeout (Sekunden) | Gibt an, wie lange der Workflow ausgeführt werden kann, bevor er geschlossen und als fehlerhaft markiert wird. | 200 |
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 |
Target | Microsoft.SQLServer.Replication.Windows.Subscription | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.Replication.Windows.MonitorType.SubscriptionLongEstimatedTime | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Core.RunAs.Monitoring |
<UnitMonitor ID="Microsoft.SQLServer.Replication.Windows.Monitor.SubscriptionLongEstimatedTimeMonitor" Accessibility="Public" Enabled="true" Target="SQLReplWD!Microsoft.SQLServer.Replication.Windows.Subscription" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Replication.Windows.MonitorType.SubscriptionLongEstimatedTime" ConfirmDelivery="false" RunAs="SqlCoreLib!Microsoft.SQLServer.Core.RunAs.Monitoring">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Replication.Windows.Monitor.SubscriptionLongEstimatedTime.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Core.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>
<MachineName>$Target/Host/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/MachineName$</MachineName>
<InstanceName>$Target/Host/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/InstanceName$</InstanceName>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<ConnectionString>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/Distributor$</ConnectionString>
<MonitoringType>$Target/Host/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SubscriptionType>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/Type$</SubscriptionType>
<PublisherName>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/Publisher$</PublisherName>
<Subscriber>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/Subscriber$</Subscriber>
<PublisherDb>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/PublicationDatabase$</PublisherDb>
<SubscriberDb>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/SubscriptionDatabase$</SubscriberDb>
<Publication>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/PublicationName$</Publication>
<ReplicationType>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/ReplicationType$</ReplicationType>
<EstimatedTimeSecondsThreshold>60</EstimatedTimeSecondsThreshold>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>200</TimeoutSeconds>
<CheckMachineAndInstanceName>false</CheckMachineAndInstanceName>
</Configuration>
</UnitMonitor>