Wie kann SQL Server eine Fehlermeldung, wenn eine E-Mail-Replikation Publisher zu einem Teilnehmersystem keine Verbindung herstellen kann

StackOverflow https://stackoverflow.com/questions/1824939

Frage

Wir haben mehrere Remote-Standorte, an denen wir auf SQL Server 2005-Replikation festgelegt haben. Manchmal ist der Verlag nicht aus verschiedenen Gründen wie

replizieren

1) Netzwerkprobleme,

2) falsche Abschaltungen des Teilnehmers,

3) Änderung der Domain-Passwörter,

4) Änderung in SQL Passwörtern,

5) Fehler auf dem Teilnehmersystem wechseln.

Gibt es eine Möglichkeit wir SQL Server des Server-Betreiber E-Mail machen können, wenn dies geschieht, so kann er überprüfen?

Danke, Chak.

War es hilfreich?

Lösung

So wie ich dies in der Regel handhaben ist von dem SQL-Agent-Auftrag Modifizieren (en), die für den Start / Ausführen der Replikationsagenten verantwortlich ist (abhängig von Ihrer Replikationstopologie, finden Sie eine Vielzahl von ihnen haben in potentiell verschiedenen Orten). Einfach einen Jobschritt an den entsprechenden Agenten Job hinzufügen (n) (dh Log-Leser Mittel, Verteilungsmittel, fusionieren Mittel, Warteschlangenmittel, etc.) nach dem „run agent“ Schritt, wenn / ausgeführt wird, wenn dieser Schritt abgeschlossen ist / fehlschlägt ( je nachdem, ob Sie einen kontinuierlichen Zeitplan verwenden).

Zum Beispiel, wenn ich eine Transaktions unidirektionale Push Veröffentlichung Setup habe, wird der Verteilungs-Agent auf dem Verteiler ausgeführt werden. Wenn ich an den Verteiler anschließen und den SQL-Agent-Auftrag für die Ausführung des Verteilungs-Agenten für diese Veröffentlichung verantwortlich finden, kann ich den Job ändern und einen Schritt fügen Sie eine E-Mail zu einer bestimmten Gruppe zu senden, wenn der „run-Agent“ Schritt fehlschlägt / vervollständigt. Wenn ich einen kontinuierlichen Replizierungsplan verwende, werde ich einfach hinzufügen, der Schritt, wenn die „run-Agent“ Schritt beendet per E-Mail (wie ich möchte benachrichtigt werden, wenn der Agent aus irgendeinem Grund stehen bleibt). Wenn ich einen nicht-kontinuierlichen Zeitplan bin verwenden, kann ich stattdessen den E-Mail Schritt nur bei Ausfall des „run-Agenten“ Schrittes ausgeführt habe. Sie können auch diesen „E-Mail“ Schritt konfigurieren Sie eine E-Mail zu senden, Pause für ein wenig, dann versuchen Sie die Agenten neu zu starten automatisch (einfach durch den Schritt der Konfiguration auf „gehen zu Schritt 1“ auf Erfolg ").

Hier ein Screenshot, der die Arbeitsschritte aussehen wie ein Verteilungs-Agent stellt dar, was konfiguriert ist, wie ich umreißen oben:

Sie werden darüber im Bild bemerke ich einen Schritt „Benachrichtigen, Pause, versuchen Sie es erneut“ genannt hinzugefügt haben, die jederzeit ausgeführt werden, hält der Agent (Erfolg oder Misserfolg - dies ist beabsichtigt, da ich eine kontinuierliche Replizierungsplan bin mit und wollen einfach wissen, wann immer der Verteilungs-Agent aus irgendeinem Grund nicht ausgeführt wird). Dieser Schritt im Grunde eine E-Mail an eine bestimmte Gruppe sendet, wartet auf eine oder zwei Minuten, dann beginnt der Agent wieder auf. Sie können Code hinzufügen zu tun, was Sie die Protokollierung wie einschließlich, nur eine bestimmte Anzahl von Malen in einer bestimmten Zeitscheibe neu zu starten, usw. Es ist leicht scripted und wiederholbar für eine beliebige Anzahl von Agenten, Veröffentlichungen usw. (I-Skripte haben keine neue, um sicherzustellen, Replikations-Agent in jeder Art von Topologie diese Art der Konfiguration umfasst -. dann ist es einfach eine Frage von ihnen zu einem Release-Tool hinzugefügt oder planen die Ausführung, je nachdem, wie Sie in Ihrer Umgebung bereitstellen)

Andere Tipps

Was Agent-Probleme zu erfassen, wollen Sie wissen, wann die Logreader und Verteiler gestoppt. Meins ist auch eine kontinuierliche Replikation wie chadhoc, aber ich finde es einfacher, eine Benachrichtigung zu verwenden, um mir zu sagen, ob die Agenten gestoppt werden.

USE [msdb] 
GO 
EXEC msdb.dbo.sp_add_alert  
    @name=N'Distribution agent stopped',   
    @message_id=0,  
    @severity=0,  
    @enabled=1,   
    @delay_between_responses=2160, 
    @include_event_description_in=1,   
    @category_name=N'[Uncategorized]',  
    @performance_condition=N'MSSQL$MYDATABASE:Replication Agents|Running|Distribution|=|0', 
    @job_id=N'00000000-0000-0000-0000-000000000000' 
GO 
EXEC msdb.dbo.sp_update_notification 
    @alert_name=N'Distribution agent stopped',   
    @operator_name=N'Amit',  
    @notification_method = 1 

Validierung / Sync-Fehler sind nicht so einfach zu erkennen. Sie können einen nächtlichen Job einrichten laufen sp_publication_validation und das Setup eine weitere Warnung auf "Validierung fehlgeschlagen".

Ich weiß nicht viel über die Replikation speziell, aber sp_readerrorlog ist eine sehr nützliche gespeicherte Prozedur mit dem Sie die DB-Protokolle aus der Datenbankinstanz zugreifen. Bei Bedarf kann es Ihnen erlaubt, mehr in geeigneter Weise auf der Grundlage der spezifischen Fehlermeldungen nicht nur ERFOLG / FAIL Zweige von einem Agentenauftrag zu reagieren. Sie können natürlich auch eine E-Mail direkt aus einer gespeicherten proc senden, die Empfänger Anpassung basierend auf, die auf den Fehler am besten reagieren können (oder der Tageszeit - Tag / Nachtschicht Koordinatoren zum Beispiel).

Auch wäre es vielleicht sinnvoller sein, eine E-Mail zu senden, wenn der Auftrag nicht erfolgreich ist als ausfällt, Ihre potenziellen Ausfälle sind Netzwerke Entnetzung in Erwägung? Sie könnten einen Austausch der Regel auf Ihrer Seite einrichten möchten diesen Posteingang zu überwachen und eine Fehlermeldung bei der Server-Betreiber abfeuern, wenn es eine erwartete Erfolgsmeldung erhalten tut .... Menschen sind sehr gut zu konstanten Reiz Ausfiltern und den Mangel an eine Erfolgsmeldung leicht übersehen werden könnten. Austausch auf der anderen Seite ist immer (in der Regel) wachsam.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top