Verwenden von Warnungen für Replikations-Agentereignisse

Gilt für:SQL ServerAzure SQL Managed Instance

SQL Server Management Studio und Microsoft SQL Server-Agent bieten eine Möglichkeit, Ereignisse wie Replikations-Agent-Ereignisse mithilfe von Warnungen zu überwachen. SQL Server-Agent überwacht das Windows-Anwendungsprotokoll auf Ereignisse, die Warnungen zugeordnet sind. Wenn ein solches Ereignis auftritt, antwortet SQL Server-Agent automatisch, indem eine Aufgabe ausgeführt wird, die Sie definiert haben und/oder E-Mail oder eine Pagernachricht an einen angegebenen Operator senden. SQL Server enthält eine Reihe vordefinierter Warnungen für Replikations-Agents, die Sie konfigurieren können, um eine Aufgabe 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 in diesem Thema.

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

Meldungs-ID Vordefinierte Warnung Bedingung, die die Warnung auslöst Zusätzlich eingegebene 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. Nein
20572 Replikation: Das Abonnement wurde nach einem Überprüfungsfehler neu initialisiert. Antwortauftrag 'Abonnements bei Datenüberprüfungsfehler erneut initialisieren' initialisiert ein Abonnement erfolgreich erneut. Nein
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 " 1Festgelegt" festgelegt ist, wird der Verteilungs-Agent nach Abschluss der Überprüfung heruntergefahren. 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. Sie können auch Warnungen für andere Replikationsereignisse mithilfe der SQL Server-Warnungsinfrastruktur definieren. Weitere Informationen finden Sie unter Erstellen eines benutzerdefinierten Ereignisses.

So konfigurieren Sie vordefinierte Replikationswarnungen

Direktes Anzeigen des Anwendungsprotokolls

Verwenden Sie zum Anzeigen des Windows-Anwendungsprotokolls die Microsoft Windows-Ereignisanzeige. Das Anwendungsprotokoll enthält SQL Server-Fehlermeldungen sowie Meldungen für viele andere Aktivitäten auf dem Computer. Im Gegensatz zum SQL Server-Fehlerprotokoll wird bei jedem Starten von SQL Server kein neues Anwendungsprotokoll erstellt (jede SQL Server-Sitzung schreibt neue Ereignisse in ein vorhandenes Anwendungsprotokoll); Sie können jedoch angeben, wie lange protokollierte Ereignisse aufbewahrt werden sollen. 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 Antwort 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 für Datenüberprüfungsfehler erneut initialisieren" und wird im Ordner "SQL Server-Agent Aufträge" in SQL Server Management Studio gespeichert. Informationen zum Aktivieren dieses Antwortauftrags finden Sie unter Konfigurieren vordefinierter Replikationsbenachrichtigungen (SQL Server Management Studio).For information about enabling this response job, see Configure Predefined Replication Alerts (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 beispielsweise die Daten in der Tabelle "Sales.SalesOrderHeader " bei Subscriber A die Überprüfung fehlschlägt, kann SQL Server die Meldung 20574 auslösen und Sie über diesen Fehler benachrichtigen. 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 möchten, der die Warnmeldung 20574 dienstt, 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  

Weitere Informationen

Verwaltung des Replikations-Agents
Best Practices for Replication Administration
Überwachen (Replikation)