存储过程失败时发出警报

时间:2016-07-06 10:52:01

标签: sql sql-server stored-procedures

如果SQL Server (2008)任何原因失败,是否可以stored procedure发送电子邮件提醒?

我可以从SQL作业中轻松完成,但无法在Programmability区域或stored procedure本身的属性中看到任何选项。此stored procedure由其他应用程序按需触发。我已经看过从其他应用程序执行此操作但是这增加了许多复杂的层次 - 我希望SQL Server让我对此进行了覆盖!?

我搜索过但未找到任何有相同问题的人。

感谢。

2 个答案:

答案 0 :(得分:2)

如何执行此操作的高级概述..

1.如果发生故障,将存储过程修改为返回1并登录到表中。这也有一些缺点,因为some failures wont be Caught
2.一旦信息登录到表格中,使用SP_SEND_DBMAIL即可轻松发送电子邮件。

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

如果我想发送电子邮件,我将使用上述方法而不是每次失败都发送电子邮件。因为我将数据记录到表中,我可以每1小时左右运行一次SQL作业,具体取决于我需要的频率

答案 1 :(得分:1)

是的,它非常简单,只需使用正常的错误处理(如TRY / CATCH),然后在catch块中使用sp_send_dbmail向您需要的任何收件人发送电子邮件。