2016-07-06 16 views
2

Ist es möglich, SQL Server (2008) eine E-Mail-Warnung senden, wenn eine stored procedure für keine Grund schlägt?Warnen, wenn gespeicherte Prozedur fehlschlägt

Ich kann es ziemlich leicht von einem SQL-Job tun, aber kann keine Optionen innerhalb der Programmability Bereich oder die Eigenschaften der stored procedure selbst sehen. Diese stored procedure wird bei Bedarf über eine andere Anwendung ausgelöst. Ich habe es mir von der anderen Anwendung aus angeschaut, aber das bringt viele Komplikationen mit sich - ich hatte gehofft, dass SQL Server mich dazu gebracht hat !?

Ich habe gesucht, aber nicht jemand mit der gleichen Frage gefunden.

Danke.

+0

https://msdn.microsoft.com/en-us/library/ms190307.aspx –

Antwort

2

Hohe Überblick darüber, wie Sie dies tun können ..

1.Modify gespeichert Procs 1 Rückgabe im Falle des Scheiterns und melden Sie sich table.This hat auch einige Schwächen, weil some failures wont be Caught
2.Once die Informationen wird in die Tabelle eingeloggt, dann ist das Senden von E-Mails einfach mit SP_SEND_DBMAIL.

EXEC msdb.dbo.sp_send_dbmail 
    @profile_name = 'Adventure Works Administrator', 
    @recipients = '[email protected]', 
    @query = 'SELECT COUNT(*) FROM AdventureWorks2012.Production.WorkOrder 
        WHERE DueDate > ''2004-04-30'' 
        AND DATEDIFF(dd, ''2004-04-30'', DueDate) < 2' , 
    @subject = 'stored procedures Failures' 

Wenn ich E-Mail senden will, werde ich oben Ansatz verwenden, anstatt E-Mail sendet für jeden failure.Since i Daten in eine Tabelle angemeldet, kann ich einen SQL-Auftrag alle 1 Stunde in Betrieb oder so abhängig von der Frequenz i brauchen

1

Ja, es ist ziemlich einfach, verwenden Sie einfach normale Fehlerbehandlung wie TRY/CATCH und verwenden Sie dann in Ihrem catch-Block sp_send_dbmail, um eine E-Mail an die von Ihnen gewünschten Empfänger zu senden.

+0

Großartig, ich werde einen Blick auf diese Funktion werfen. Vielen Dank! :) –

+0

Ich würde vorschlagen, keine E-Mails direkt aus Catch zu senden - schreiben Sie in Ihr eigenes Journal der gescheiterten SPs und fahren Sie mit Job seriell fort. Mehrere Fehler in einer E-Mail –

+0

Ich denke, es hängt von der Situation ab, wenn es etwas ist, das nur einmal pro Tag ausgeführt wird, um es zu verarbeiten, wäre es wahrscheinlich in Ordnung, wenn es 5000 Mal am Tag ausgeführt wird, dann logge ich es ein Eine Tabelle und das Senden einer einzelnen E-Mail wäre sinnvoll. – steoleary