Dieser Monitor überprüft den Status der Replikationsverteilungs-Agent-Dienste für das Abonnement. Beachten Sie, dass der Windows-Dienst "SQL Server-Agent" durch keine Edition von SQL Server Express unterstützt wird. Deshalb ist dieser Monitor nicht auf SQL Server Express-Szenarien anwendbar.
Der Replikationsverteilungs-Agent ist eine ausführbare Datei, die bei der Momentaufnahme- und Transaktionsreplikation verwendet wird. Der Agent verschiebt Momentaufnahmen sowie die in der Verteilungsdatenbank gespeicherten Transaktionen in die Zieltabellen auf den Abonnenten. Beachten Sie, dass der Windows-Dienst "SQL Server-Agent" durch keine Edition von SQL Server Express unterstützt wird. Deshalb ist dieser Monitor nicht auf SQL Server Express-Szenarien anwendbar.
Der Verteilungs-Agent wird unter einem Konto ausgeführt, das nicht über ausreichende Berechtigungen verfügt.
Abfragetimeouts
Verletzungen des Primärschlüssels oder Fehler des Typs “Zeile nicht gefunden” auf dem Abonnenten.
Der Agent kann keine Verbindung mit der Verteilungsdatenbank oder den Abonnentendatenbanken herstellen.
Speichererschöpfung für den nicht interaktiven Desktopheap. http://support.microsoft.com/kb/949296
"Fehler des Verteilungs-Agents beim Erstellen temporärer Dateien im Verzeichnis "C:\Programme\Microsoft SQL Server\100\COM" (gilt für SQL 2008 und SQL 2008 R2) http://support.microsoft.com/kb/956032
Der Verteilungs-Agent kann keine Momentaufnahmedateien anzeigen.
Der Verteilungs-Agent verfügt nicht über die erforderlichen Berechtigungen.
An den Verteilungs-Agent-Befehl wurden falsche Parameter übergeben.
Der Prozess konnte kein Massenkopieren in die Tabelle ausführen.
Stellen Sie sicher, dass der Verteilungs-Agent unter einem Konto ausgeführt wird, das die erforderlichen Berechtigungen aufweist. Weitere Informationen zum Identifizieren der erforderlichen Berechtigungen finden Sie in diesem Artikel.
Wenn mehrere Server an der Replikationstopologie beteiligt sind, müssen SQL Server-Agents unter einem Domänenkonto ausgeführt werden.
Das Konto des Verteilungs-Agents muss Mitglied der festen Rolle [db_owner] für die Verteilungs- und Abonnentendatenbanken sein.
Timeout der Abfrage.
Überprüfen Sie, ob eine Blockierung auf dem Verteiler und Abonnenten vorliegt oder der Verteilungs-Agent blockiert ist. Beheben Sie die Blockierung, und starten Sie den Agent neu.
Verwenden Sie für das Abfragetimeout des Verteilungs-Agents einen größeren Wert oder 0 (unbegrenzte Wartedauer).
Verletzung des Primärschlüssels oder Fehler des Typs “Zeile nicht gefunden” auf dem Abonnenten.
Überprüfen Sie die Artikeleigenschaften, um zu bestätigen, dass alle Einfüge-, Aktualisierungs- und Löschbefehle repliziert werden.
Stellen Sie sicher, dass Benutzer keinen Schreibzugriff auf die Abonnentendatenbank besitzen.
Verwenden Sie den Parameter "-skiperrors" des Verteilungs-Agents, um diese Fehler zu ignorieren (verwenden Sie diese Vorgehensweise als vorübergehende Problembehandlung, und beheben Sie das zugrunde liegende Problem).
Es kann keine Verbindung mit der Verteilungs- oder der Abonnentendatenbank hergestellt werden.
Stellen Sie sicher, dass das Konto des Verteilungs-Agents ein Mitglied der festen Rolle [db_owner] für die Verteilungsabonnentendatenbanken ist. Überprüfen Sie die Verbindung von Management Studio mit den Abonnenten- und Verteilungsdatenbanken.
Aktivieren Sie auf dem Verteiler und dem Verleger die von SQL Server verwendeten TCP- und UDP-Ports in der Firewall (standardmäßig wird Port 1433 verwendet).
Ausschöpfung des Speichers für den nicht interaktiven Desktopheap.
Verwenden Sie eine der folgenden Problemumgehungen aus diesem KB-Artikel, um das Problem zu beheben.
Fehler des Verteilungs-Agents beim Erstellen temporärer Dateien im Verzeichnis "C:\Programme\Microsoft SQL Server\100\COM" (gilt für SQL 2008 und SQL 2008 R2). Verwenden Sie diesen KB-Artikel, um das Problem zu beheben.
Der Verteilungs-Agent kann die Momentaufnahmedateien nicht anzeigen. Verwenden Sie UNC-Pfade zum Speichern des Momentaufnahmeordners. Geben Sie diesen frei, und erteilen Sie dem Konto des Verteilungs-Agents Leseberechtigungen.
Der Client verfügt nicht über die erforderliche Berechtigung. Folgen Sie den Anweisungen unter http://msdn.microsoft.com/library/ms143504.aspx, und stellen Sie sicher, dass die SID des SQL Agent-Diensts über die folgenden Rechte verfügt:
Als Dienst anmelden (SeServiceLogonRight)
Token auf Prozessebene ersetzen (SeAssignPrimaryTokenPrivilege)
Traversierungsüberprüfung umgehen (SeChangeNotifyPrivilege)
Speicherkontingente für einen Prozess anpassen (SeIncreaseQuotaPrivilege)
An den Verteilungs-Agent-Befehl wurden falsche Parameter übergeben. Überprüfen Sie die Parameter, die an die Befehlszeile des Verteilungs-Agents übergeben werden.
Verringern Sie den an den Parameter "-BCPBatchSize" im Auftrag des Verteilungs-Agents übergebenen Wert.
Führen Sie den Verteilungs-Agent erneut aus, und fügen Sie den Parameter "-OutputVerboseLevel 2" hinzu. Auf diese Weise werden weitere Details zur fehlerhaften Anweisung abgerufen.
Initialisieren Sie den Abonnenten mithilfe einer Sicherung.
http://technet.microsoft.com/library/ms151868.aspx
Name | Beschreibung | Standardwert |
Warnungspriorität | Definiert die Warnungspriorität. | Normal |
Warnungsschweregrad | Definiert den Warnungsschweregrad. | Fehler |
Aktiviert | Aktiviert oder deaktiviert den Workflow. | Ja |
Geschätzte Auftragsdauer | Schwellenwert, der zum Überprüfen der Kompatibilität des Auftragszeitplans verwendet wird. | 15 |
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 |
Aufträge mit unbekanntem Status anzeigen | Aufträge mit unbekanntem Status in die Monitorausgabe und den Warnungskontext einschließen. Wirkt sich auf die Integrität aus. | Nein |
Synchronisierungszeit | Synchronisierungszeit |
|
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 |
Target | Microsoft.SQLServer.2012.Replication.Subscription | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2012.Replication.MonitorType.ReplicationAgentState | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor |
<UnitMonitor ID="Microsoft.SQLServer.2012.Replication.Monitor.SubscriptionDistributionAgentState" 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.ReplicationAgentState" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.Replication.Monitor.SubscriptionDistributionAgentState.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='Message']$</AlertParameter1>
</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>15</SqlTimeout>
<ConnectionString>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription']/Distributor$</ConnectionString>
<XPathName>Distribution$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription']/Distributor$$Target/Host/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscriber']/ConnectionString$$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription']/SubscriptionName$</XPathName>
<ShowJobsWithUnknownState>false</ShowJobsWithUnknownState>
<EstimatedJobDuration>15</EstimatedJobDuration>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>