Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 存储过程失败时发出警报_Sql_Sql Server_Stored Procedures - Fatal编程技术网

Sql 存储过程失败时发出警报

Sql 存储过程失败时发出警报,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,如果存储过程因任何原因失败,是否可以让SQL Server(2008)发送电子邮件警报 我可以很容易地从SQL作业中完成,但在可编程性区域中看不到任何选项,也看不到存储过程本身的属性。此存储过程是通过另一个应用程序按需触发的。我已经从另一个应用程序中考虑过这样做,但这增加了许多复杂的层次—我希望SQL Server已经介绍过我了 我已经搜索过了,但没有找到有同样问题的人 谢谢。是的,非常简单,只需使用TRY/CATCH等常规错误处理,然后在CATCH块中使用sp_send_dbmail向您需要的

如果
存储过程因任何原因失败,是否可以让
SQL Server(2008)
发送电子邮件警报

我可以很容易地从SQL作业中完成,但在
可编程性
区域中看不到任何选项,也看不到
存储过程
本身的属性。此
存储过程是通过另一个应用程序按需触发的。我已经从另一个应用程序中考虑过这样做,但这增加了许多复杂的层次—我希望
SQL Server
已经介绍过我了

我已经搜索过了,但没有找到有同样问题的人


谢谢。

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

关于如何做到这一点的高级概述

1.修改存储的进程,在失败时返回1并登录到表中。这也有一些缺点,因为
2.一旦信息登录到表中,发送电子邮件就很容易使用

EXEC msdb.dbo.sp\u send\u dbmail
@profile_name='Adventure Works管理员',
@接受者yourfriend@Adventure-Works.com",,
@查询='从AdventureWorks2012.Production.WorkOrder中选择计数(*)
其中,截止日期>“2004-04-30”
和日期差(dd,“2004-04-30”,DueDate)<2',
@主题='存储过程失败'

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

太好了,我将看看该功能。谢谢!:)我建议不要直接从catch-write向您自己的失败SP日志发送邮件,而是按顺序继续作业。一封电子邮件中有几个错误。我想这取决于具体情况,如果是每天只执行一次以进行某些处理的邮件,将其放入try/catch可能会很好,如果每天执行5000次,那么我想登录到表并发送一封邮件是有意义的。
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'