Dieser Monitor überprüft den Status der Verteilungs-Agents für alle Veröffentlichungen, die von diesem Verteiler verarbeitet werden.
Fehler mindestens eines Verteilungs-Agents.
Die folgenden Ursachen können z. B. für Fehler von Verteilungs-Agents verantwortlich sein:
Das Abonnement wurde nicht initialisiert, und die Momentaufnahme ist nicht verfügbar.
Der Verteilungs-Agent wird unter einem Konto ausgeführt, das nicht über ausreichende Berechtigungen verfügt.
Abfragetimeouts
Verletzung des Primärschlüssels oder Fehler des Typs “Zeile nicht gefunden” auf dem Abonnenten.
Es kann keine Verbindung mit der Verteilungs- oder den Abonnentendatenbanken hergestellt werden.
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 die Momentaufnahmedateien nicht anzeigen.
Der SQL Agent-Dienst verfügt nicht über die erforderlichen Berechtigungen.
An den Verteilungs-Agent wurden falsche Parameter übergeben.
Der Verteilungs-Agent wird unter einem Konto ausgeführt, das unzureichende Berechtigungen aufweist.
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.
Abfragetimeout
Ü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.
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ügungen repliziert werden. Aktualisieren und löschen Sie Befehle, damit nichts übersprungen wird.
Vergewissern Sie sich, dass Benutzer keinen Schreibzugriff auf die Abonnentendatenbank besitzen.
Konfigurieren Sie den Verteiler-Agent so, dass der Parameter "-skiperrors" zum Ignorieren dieser Fehler verwendet wird (verwenden Sie diese Vorgehensweise als vorübergehende Problembehandlung, und beheben Sie das zugrunde liegende Problem).
Es kann keine Verbindung mit der Verteilungs- oder Abonnentendatenbank hergestellt werden.
Das Konto des Verteilungs-Agents muss Mitglied der festen Rolle [db_owner] für die Verteilungs- und Abonnentendatenbanken sein. Stellen Sie sicher, dass eine Verbindung aus SQL Server Management Studio mit den Verteilungs- und Abonnentendatenbanken hergestellt werden kann.
Aktivieren Sie auf dem Verteiler und dem Verleger die von SQL Server verwendeten TCP- und UDP-Ports in der Firewall.
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 die Problemumgehung aus diesem KB-Artikel, um das Problem zu beheben.
Die VerteilungDer Agent kann Folgendes nicht lesen:Momentaufnahmedateien
Verwenden Sie einen UNC-Pfad zum Speichern des Momentaufnahmeordners. Geben Sie den Ordner frei, und erteilen Sie dem Konto des Verteilungs-Agents Leseberechtigungen.
Erforderliche Berechtigungenweist der SQL Agent-Dienst nicht auf.
Befolgen Sie 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 Befehl des Verteilungs-Agents wurden falsche Parameter übergeben.
Überprüfen Sie die Parameter, die an die Befehlszeile des Verteilungs-Agents übergeben werden.
Der Vorgang konnte kein Massenkopieren in die Tabelle ausführen.
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.
Nur Mitglieder der Rollen "sysadmin" oder "db_owner" können diesen Vorgang ausführen.
Wenn sich die Verteilungsdatenbank und der Abonnent in verschiedenen Domänen befinden und keine Vertrauensstellung zwischen den Domänen vorhanden ist (insbesondere die Abonnentendomäne nicht der Verteilungsdomäne vertraut), muss ein angegebenes benanntes Konto verwendet werden.
Untersuchen Sie die Fehlerdetails des SQL Server-Agents auf dem Abonnenten. Der Abonnentenname ist der erste Teil des angezeigten "Abonnements".
Stellen Sie auf dem Abonnenten sicher, dass diese Agent-Anmeldung eine gültige Anmeldung ist.
Stellen Sie auf dem Abonnenten sicher, dass das Konto für die Agent-Anmeldung Mitglied der Rollen "sysadmin" oder "db_owner" für die Datenbank ist, die repliziert wird.
http://technet.microsoft.com/library/ms147328.aspx
Name | Beschreibung | Standardwert |
Aktiviert | Aktiviert oder deaktiviert den Workflow. | Ja |
Generiert Benachrichtigungen. | Definiert, ob der Workflow eine Benachrichtigung 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 Benachrichtigungskontext einschließen. Wirkt sich auf die Integrität aus. | Nein |
Timeout (Sekunden) | Timeout (Sekunden) | 300 |
Synchronisierungszeit | Synchronisierungszeit |
|
Target | Microsoft.SQLServer.2012.Replication.Distributor | ||
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.DistributionAgentState" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2012.Replication.Distributor" 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.DistributionAgentState.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>300</SqlTimeout>
<ConnectionString>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericDistributor']/ConnectionString$</ConnectionString>
<XPathName>Distribution$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericDistributor']/ConnectionString$</XPathName>
<ShowJobsWithUnknownState>false</ShowJobsWithUnknownState>
<EstimatedJobDuration>15</EstimatedJobDuration>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>