2016-07-06 56 views
2

是否有可能让SQL Server (2008)发送电子邮件提醒如果stored procedure失败任何原因?存储过程失败时的警报

我可以很容易地从SQL作业中完成它,但在Programmability区域或stored procedure本身的属性中看不到任何选项。此stored procedure是通过其他应用程序按需触发的。我已经看过从另一个应用程序做它,但这增加了许多层次的复杂性 - 我希望SQL Server让我覆盖这个!?

我已搜查,但没有发现同样的问题的人。

谢谢。

+0

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

回答

2

的你如何能做到这个高级概述..

1.Modify存储特效在失败的情况下返回1,并登录到table.This也有一些弱点,因为some failures wont be Caught
2.接通信息登录到表中,然后使用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' 

,如果我要发送电子邮件,我会用上面的办法,而不是对每个failure.Since我记录的数据到一个表发送电子邮件,我可以运行SQL作业,每隔1小时左右,这取决于我的频率需要

1

是的,这是很简单,只需使用普通的错误处理,如TRY/CATCH,然后在你的catch块使用sp_send_dbmail发送电子邮件到你需要的任何收件人。

+0

太好了,我会看看该功能。谢谢! :) –

+0

我建议不要直接从catch发送邮件 - 写给你自己的失败sps日记,然后连续作业。一封电子邮件中有几个错误 –

+0

我想这要看情况,如果它的东西,只是每天一次执行做一些处理,将它放在try/catch语句可能会被罚款,如果它正在执行每日5000次,那么我想记录到一张桌子和发送一封电子邮件将是有道理的。 – steoleary