Verwenden Sie Warnungen für Replikations-Agent-Ereignisse

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 ein
14150 Replikation: Der Agent war erfolgreich. Agent wird erfolgreich heruntergefahren. Ja
14151 Replikation: Agentfehler Agent wird mit einem Fehler heruntergefahren. Ja
14152 Replikation: erneuter Versuch des Agenten 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: Abonnent hat die Datenvalidierung nicht bestanden Der Verteilungs- oder Merge-Agent kann die Daten nicht überprüfen. 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 Schwellenwerte und Warnungen im Replikationsmonitor festlegen. 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

Anwendungsprotokoll direkt anzeigen

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 für Abonnements, die die Datenvalidierung nicht bestehen, einen Reaktionsauftrag bereit und bietet außerdem ein Framework für die Erstellung weiterer automatisierter Reaktionen 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 Artikel in einer Transaktionsveröffentlichung die Validierung nicht bestehen, initialisiert der Antwortauftrag nur die Artikel erneut, deren Validierung fehlgeschlagen ist. Schlagen Artikel in einer Mergeveröffentlichung bei der Überprüfung fehl, initialisiert der Antwortauftrag alle Artikel in der Veröffentlichung erneut.

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 bei Abonnent A die Validierung nicht bestehen, kann SQL Server die Meldung 20574 auslösen, um Sie über diesen Fehler zu informieren. Sie erhalten die folgende Meldung: „Der Abonnent ‚A‘, dessen Abonnement für den Artikel ‚SalesOrderHeader‘ in der Veröffentlichung ‚MyPublication‘, hat die Datenvalidierung nicht bestanden.“

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 keiner bestimmten Warnungsinstanz zugeordnet werden kann, enthält die Tabelle eine status-Spalte, mit der sich bearbeitete Einträge nachverfolgen lassen. 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