2010-06-10 58 views
2

我試圖發送數據庫郵件時發生錯誤transaction.My設置爲dbo.sp_send_dbmail是正確的,當我執行proc我在1分鐘內收到一封電子郵件。發送dbmail @@錯誤從sql server 2005

但是,當我嘗試在事務內的另一個proc中使用dbo.sp_send_dbmail時,我得不到電子郵件。 Sql服務器在結果窗口中顯示「郵件排隊」,但我從不接收它。

BEGIN TRANSACTION

DECLARE @err的int DECLARE @test爲nvarchar(最大)

RAISERROR( '這是一個測試',16,1) SELECT @err = @@ ERROR

IF @err <> 0 BEGIN

SET @test = ERROR_MESSAGE()

EXEC msdb.dbo.sp_send_dbmail
@收件人= '[email protected]',
@body = '內部測試',
@subject = '用PROC錯誤',
@body_format =「HTML ',
@append_query_error = 1,
@profile_name ='數據庫郵件配置文件';

ROLLBACK TRANSACTION RETURN END

COMMIT TRANSACTION

,我得到結果爲

消息50000,級別16,狀態1,行7
這是一個測試
郵件排隊。

回答

3

你滾回去,這樣它從不出門,把電子郵件代碼交易

外從書本上線

當從 現有事務內執行sp_send_dbmail, 數據庫郵件依靠用戶 提交或回滾任何 更改。它不會啓動一個內部的 事務。

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

+0

humm這就是我最初想的......但是我認爲它會像打印聲明......你知道......拍攝並忘記某種東西,因爲它正在執行proc ....我甚至嘗試將郵件代碼放在開始結尾之外,但它仍然不起作用.... – Zeus 2010-06-10 19:58:19