Verwenden von Warnungen für Ereignisse des Replikations-Agents
SQL Server Management Studio und der Microsoft SQL Server-Agent ermöglichen anhand von Warnungen das Überwachen von Ereignissen, wie z. B. Ereignissen des Replikations-Agents.Der SQL Server-Agent überwacht das Windows-Anwendungsprotokoll auf Ereignisse, die Warnungen zugeordnet sind. Tritt ein solches Ereignis auf, antwortet der SQL Server-Agent automatisch, indem er einen benutzerdefinierten Task ausführt und/oder eine E-Mail- oder Pagernachricht an einen angegebenen Operator sendet. SQL Server enthält einen Satz vordefinierter Warnungen für Replikation-Agents, die Sie zum Ausführen eines Tasks und/oder Benachrichtigung eines Operators konfigurieren können. 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. |
|
|
22815 |
Peer-to-Peer-Konflikterkennungswarnung |
Der Verteilungs-Agent hat bei dem Versuch, eine Änderung an einem Peer-to-Peer-Knoten vorzunehmen, einen Konflikt erkannt. |
Ja |
Neben diesen Warnungen stellt der Replikationsmonitor eine Reihe von Warnungen bereit, die sich auf den Status und die Leistung beziehen. Weitere Informationen finden Sie unter Festlegen von Schwellenwerten und Warnungen im Replikationsmonitor. Die Warnungsinfrastruktur von SQL Server ermöglicht es Ihnen, auch Warnungen für andere Replikationsereignisse zu definieren. Weitere Informationen finden Sie unter Erstellen eines benutzerdefinierten Ereignisses.
So konfigurieren Sie vordefinierte Replikationswarnungen
- SQL Server Management Studio: Vorgehensweise: Konfigurieren von vordefinierten Replikationswarnungen (SQL Server Management Studio)
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 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 bei Datenüberprüfungsfehler erneut initialisieren und ist in SQL Server Management Studio im Ordner Aufträge des SQL Server-Agents gespeichert. Informationen zum Aktivieren dieses Antwortauftrags finden Sie unter Vorgehensweise: 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-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