gpt4 book ai didi

sql - 从 sql server 2005 发送 @@error 上的 dbmail

转载 作者:行者123 更新时间:2023-12-04 06:51:47 25 4
gpt4 key购买 nike

我正在尝试在事务中发生错误时发送数据库邮件。我对 dbo.sp_send_dbmail 的设置是正确的,当我执行 proc 时,我确实在 1 分钟内收到了一封电子邮件。

但是,当我尝试在事务中的另一个 proc 中使用 dbo.sp_send_dbmail 时,我没有收到电子邮件。 Sql server 确实在结果窗口中显示“邮件排队”,但我从未收到它。

BEGIN TRANSACTION

DECLARE @err int DECLARE @test nvarchar(max)

RAISERROR('This is a test', 16, 1) SELECT @err = @@ERROR

IF @err <> 0 BEGIN

SET @test = error_message()

EXEC msdb.dbo.sp_send_dbmail
@recipients= 'mail@mail.net',
@body = 'test inside',
@subject = 'Error with proc',
@body_format = 'HTML',
@append_query_error = 1,
@profile_name ='Database Mail Profile';

ROLLBACK TRANSACTION RETURN END

COMMIT TRANSACTION



我得到的结果是

Msg 50000, Level 16, State 1, Line 7
This is a test
Mail queued.

最佳答案

你回滚它所以它永远不会消失,把电子邮件代码放在交易之外

从网上的书

When executing sp_send_dbmail from within an existing transaction, Database Mail relies on the user to either commit or roll back any changes. It does not start an inner transaction.



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

关于sql - 从 sql server 2005 发送 @@error 上的 dbmail,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3017857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com