Freigeben über


Verwenden von Warnungen für Replikations-Agentereignisse

Gilt für: SQL Server

SQL Server Management Studio und der Microsoft SQL Server-Agent ermöglichen die Überwachung von Ereignissen mithilfe von Warnungen, z. B. bei Ereignissen des Replikations-Agents. SQL Server-Agent überwacht das Windows-Anwendungsprotokoll auf Ereignisse, die Warnungen zugeordnet sind. Bei Auftreten eines solchen Ereignisses antwortet der SQL Server-Agent automatisch, indem er eine Aufgabe ausführt, die Sie definiert haben, und/oder eine E-Mail- oder Pager-Nachricht an den angegebenen Operator sendet. SQL Server enthält einen Satz vordefinierter Warnungen für Replikations-Agents ein, die Sie konfigurieren können, um eine Task auszuführen und/oder einen Operator zu benachrichtigen. Weitere Informationen zum Definieren eines auszuführenden Tasks finden Sie im Abschnitt zum Automatisieren einer Antwort auf eine Warnung.

Die folgenden Warnungen werden installiert, wenn ein Computer als Verteiler konfiguriert wird:

Meldungs-ID Vordefinierte Warnung Bedingung, die die Warnung auslöst Gibt zusätzliche Informationen in msdb..sysreplicationalerts
14150 Replikation: Der Agent war erfolgreich. Agent wird erfolgreich heruntergefahren. Ja
14151 Replikation: Fehler beim Agent. Agent wird mit einem Fehler heruntergefahren. Ja
14152 Replikation: Wiederholung des Agents. Der Agent wird nach dem erfolglosen erneuten Versuch einer Operation beendet (der Agent stellt einen Fehler fest, wie z. B. einen nicht verfügbaren Server, einen Deadlock, einen Verbindungsfehler oder einen Timeoutfehler). Ja
14157 Replikation: Abgelaufenes Abonnement wurde gelöscht. Ein abgelaufenes Abonnement wurde gelöscht. No
20572 Replikation: Das Abonnement wurde nach einem Überprüfungsfehler neu initialisiert. Antwortauftrag 'Abonnements bei Datenüberprüfungsfehler erneut initialisieren' initialisiert ein Abonnement erfolgreich erneut. No
20574 Replikation: Fehler bei der Datenüberprüfung auf dem Abonnenten. Datenüberprüfung durch Verteilungs- oder Merge-Agent fehlgeschlagen. Ja
20575 Replikation: Der Abonnent hat die Datenüberprüfung erfolgreich durchlaufen. Verteilungs- oder Merge-Agent durchläuft eine Datenüberprüfung. Ja
20578 Replikation: Der Agent wurde benutzerdefiniert heruntergefahren. Wenn die Datenüberprüfung über sp_publication_validation aufgerufen und @shutdown_agent auf 1 gesetzt ist, wird der Verteilungs-Agent nach Abschluss der Validierung abgeschaltet. Ja
22815 Peer-zu-Peer-Konflikterkennungswarnung Der Verteilungs-Agent hat bei dem Versuch, eine Änderung an einem Peer-zu-Peer-Knoten vorzunehmen, einen Konflikt erkannt. Ja

Zusätzlich zu diesen Warnungen bietet der Replikationsmonitor eine Reihe von status- und leistungsbezogenen Warnungen. Weitere Informationen finden Sie unter Set Thresholds and Warnings in Replication Monitor. Mithilfe der SQL Server-Infrastruktur für Warnungen können Sie außerdem auch Warnungen für andere Replikationsereignisse definieren. Weitere Informationen finden Sie unter Erstellen eines benutzerdefinierten Ereignisses.

So konfigurieren Sie vordefinierte Replikationswarnungen

Direktes Anzeigen des Anwendungsprotokolls

Verwenden Sie zum Anzeigen des Anwendungsprotokolls von Windows die Microsoft Windows-Ereignisanzeige. Das Anwendungsprotokoll enthält sowohl SQL Server-Fehlermeldungen als auch Meldungen zu vielen anderen Aktivitäten auf dem Computer. Im Gegensatz zum SQL Server-Fehlerprotokoll wird beim Neustart von SQL Server nicht jedes Mal ein neues Anwendungsprotokoll erstellt (in jeder SQL Server-Sitzung werden neue Ereignisse in ein vorhandenes Anwendungsprotokoll geschrieben). Sie können allerdings angeben, wie lange die protokollierten Ereignisse beibehalten werden. Wenn Sie das Windows-Anwendungsprotokoll anzeigen, können Sie das Protokoll nach bestimmten Ereignissen filtern. Weitere Informationen finden Sie in der Windows-Dokumentation.

Automatisieren einer Reaktion auf eine Warnung

Die Replikation stellt einen Antwortauftrag für Abonnements bereit, deren Überprüfung fehlgeschlagen ist, und bietet außerdem ein Framework zum Erstellen weiterer automatischer Antworten auf Warnungen. Der Antwortauftrag lautet Abonnements bei Datenüberprüfungsfehler erneut initialisieren und ist in SQL Server Management Studio im Ordner Aufträge des SQL Server-Agents gespeichert. Weitere Informationen zum Aktivieren dieses Antwortauftrags finden Sie unter Konfigurieren von vordefinierten Replikationswarnungen (SQL Server Management Studio). Wenn die Überprüfung bei Artikeln in einer Transaktionsveröffentlichung einen Fehler erzeugt, werden nur die fehlerhaften Artikel vom Antwortauftrag erneut initialisiert. Schlägt die Überprüfung in einer Mergeveröffentlichung fehl, werden alle Artikel vom Antwortauftrag erneut initialisiert.

Framework für automatische Antworten

Wenn eine Warnung auftritt, sind in der Regel die einzigen Informationen, mit deren Hilfe Sie verstehen können, was die Warnung auslöste und welche entsprechende Maßnahme ergriffen werden sollte, in der Warnmeldung enthalten. Eine Analyse dieser Informationen kann sich als fehleranfällig und zeitraubend erweisen. Die Replikation vereinfacht automatische Antworten, da in der sysreplicationalerts-Systemtabelle zusätzliche Informationen zur Warnung bereitgestellt werden. Diese Informationen sind bereits so analysiert, dass sie einfach in benutzerdefinierten Programmen verwendet werden können.

Wenn z. B. die Daten in der Sales.SalesOrderHeader-Tabelle auf dem Abonnenten A die Gültigkeitsüberprüfung nicht bestehen, löst SQL Server Warnmeldung 20574 aus, in der Sie über dieses Fehlschlagen benachrichtigt werden. Sie empfangen die folgende Meldung: "Fehler bei der Datenüberprüfung für das Abonnement des Abonnenten 'A', für den 'SalesOrderHeader'-Artikel in der in der 'MyPublication'-Veröffentlichung."

Wenn Sie eine Antwort basierend auf dieser Meldung erstellen, müssen Sie den Namen des Abonnenten, den Artikelnamen, den Veröffentlichungsnamen und den Fehler aus der Meldung manuell analysieren. Da der Verteilungs-Agent und der Merge-Agent aber die gleichen Informationen in sysreplicationalerts schreiben, zusammen mit Details wie Agenttyp, Zeitpunkt der Warnung, Veröffentlichungsdatenbank und Veröffentlichungstyp, kann der Antwortauftrag die relevanten Informationen direkt aus der Tabelle abfragen. Obwohl die genaue Zeile nicht einer spezifischen Warnungsinstanz zugeordnet werden kann, kann die status-Spalte in der Tabelle zum Nachverfolgen der Diensteinträge verwendet werden. Die Einträge in dieser Tabelle werden während der Beibehaltungsdauer für den Verlauf beibehalten.

Wenn Sie z. B. einen Antwortauftrag in Transact-SQL erstellen sollen, der Warnmeldung 20574 behandelt, können Sie die folgende Logik verwenden:

declare @publisher sysname, @publisher_db sysname, @publication sysname, @publication_type int, @article sysname, @subscriber sysname, @subscriber_db sysname, @alert_id int  
declare hc cursor local for select publisher, publisher_db, publication, publication_type, article, subscriber,   
  subscriber_db, alert_id from   
  msdb..sysreplicationalerts where  
  alert_error_code = 20574 and status = 0  
  for read only  
open hc  
fetch hc into  @publisher, @publisher_db, @publication, @publication_type, @article, @subscriber, @subscriber_db, @alert_id  
while (@@fetch_status <> -1)  
begin  
/* Do custom work  */  
/* Update status to 1, which means the alert has been serviced. This prevents subsequent runs of this job from doing this again */  
update msdb..sysreplicationalerts set status = 1 where alert_id = @alert_id  
 fetch hc into  @publisher, @publisher_db, @publication, @publication_type, @article, @subscriber, @subscriber_db, @alert_id  
end  
close hc  
deallocate hc