从SQL Server 2005发送dbmail上@@ ERROR
-
26-09-2019 - |
题
我想,当transaction.My设置内部发生错误dbo.sp_send_dbmail是正确发送数据库邮件,当我执行我做的PROC 1分钟内收到一封电子邮件。
然而,当我尝试使用dbo.sp_send_dbmail另一个proc中的事务中不是我不明白的电子邮件。 SQL Server会显示在结果窗口中的“邮件已排队”,但我从来没有收到。
BEGIN TRANSACTION
DECLARE @err INT DECLARE @test为nvarchar(最大)
RAISERROR( '这是一个测试',16,1) SELECT @err = @@ ERROR
如果@err <> 0 BEGIN
SET @test = ERROR_MESSAGE()
EXEC msdb.dbo.sp_send_dbmail结果 @收件人= 'mail@mail.net',结果 @body =“测试”内,结果, @subject = '用PROC错误',结果 @body_format = 'HTML',结果 @append_query_error = 1,结果 @profile_name =“数据库邮件资料”;结果
回滚事务 返回 END
COMMIT TRANSACTION
和我得到的结果作为
信息50000,级别16,状态1,行7,点击 这是一个测试结果 邮件排队。结果
解决方案
您滚回去,这样它从不出门,把电子邮件的代码事务之外
从上线书籍
当从执行sp_send_dbmail 现有的事务中, 数据库邮件依赖于用户 提交或回滚任何 变化。它不会启动内部 事务。
其他提示
您需要创建一个保存点,尝试你的操作,错误回滚的情况下保存点,然后发送的邮件提交。到图案相似于异常描述处理和嵌套的事务一>