Ist es möglich, in SQL Server 2008 eine Warnung einzurichten, die eine E-Mail sendet, wenn ein Auftrag in einer bestimmten Kategorie fehlschlägt?
Ich frage mich, weil ich eine E-Mail einrichten möchte, wenn ein SSRS-Abonnement fehlschlägt - und alle diese Abonnements sind Jobs in der Kategorie Berichtsserver .
BEARBEITEN - Es stellt sich heraus, dass der Job selbst nicht fehlschlägt, wenn ein SSRS-Abonnement fehlschlägt. Daher gilt meine Frage nicht für die Verwendung der SSRS-Abonnementüberwachung. Ich würde jedoch gerne wissen, welche anderen Jobs wir in unserer Umgebung ausführen
AND EXISTS
Teil des Jobs entfernenINSERT/SELECT
. Und wahrscheinlich den NamenReportServerJob_FailQueue
in etwas allgemeineres ändern . :-)Antworten:
Sie können einen Job erstellen, der jede Minute (oder wie oft Sie möchten) die Tabelle msdb.dbo.sysjobhistory überprüft. Möglicherweise möchten Sie eine Warteschlangentabelle implementieren, damit Sie die Nachricht für einen einzelnen Instanzfehler immer nur einmal senden.
Ihr Code, den Sie in einem Job planen können, lautet dann:
Nun gehe ich davon aus, dass Sie für jeden Fehler eine individuelle E-Mail senden möchten, sodass dies auch Teil des Jobs sein kann (oder Teil eines anderen Jobs, obwohl dies nicht unbedingt sinnvoll ist):
Es gibt auch einige andere Optionen:
Wenn Database Mail noch nicht eingerichtet ist, lesen Sie bitte dieses Tutorial .
Sie können auch Tools von Drittanbietern (z. B. SQL Sentry Event Manager ) verwenden, die dies erheblich vereinfachen. Vollständige Offenlegung: Ich arbeite für SQL Sentry.
quelle
Basierend auf Ihrer Bearbeitung wäre dies nur eine Erweiterung von Aarons Antwort in Bezug auf SSRS-Abonnementfehler selbst (nicht nur den SQL Agent-Job). Ich würde vorschlagen, nur einen Schritt zum Jobüberwachungsjob hinzuzufügen, oder Sie könnten dies als separaten Job insgesamt tun.
Um den Abonnementstatus zu erhalten, überprüfen Sie einfach die
ReportServer.dbo.ExecutionLog3
Ansicht . In derStatus
Spalte wird alles andere alsrsSuccess
bei Fehlern angezeigt. Filtern Sie einfach nachRequestType = 'Subscription'
. Sie sollten eine Zeitprüfung einschließen, damit Sie nicht jedes Mal alle Datensätze überprüfen. Wenn Sie den Job alle 15 Minuten ausführen, überprüfen Sie ihn inTimeStart
den letzten 15 Minuten.quelle