[英]sql server sp_send_dbmail
我使用SQL Server的sp_send_dbmail
存儲過程通過數據庫發送郵件。
但是當我執行該程序時,它正在關閉db郵件程序。 我嘗試通過sysmail_start_sp
再次啟動它。 但它又在7-8秒內再次關閉。
我試過下面的代碼:
EXEC msdb..sp_send_dbmail @profile_name = 'Test',
@recipients = 'abc@gmail.com',
@subject = 'test mail',
@body_format = 'HTML',
@body = 'test mail',
@from_address = 'xyz@yahoo.com'
當我嘗試檢查錯誤日志時,我發現以下錯誤:
信息:
對數據庫的讀取失敗。 原因:錯誤描述為'此位置不允許空格。'。數據:System.Collections.ListDictionaryInternalTargetSite:Microsoft.SqlServer.Management.SqlIMail.Server.Objects.QueueItem GetQueueItemFromCommand(System.Data.SqlClient.SqlCommand)HelpLink: NULLSource:DatabaseMailEngineStackTrace信息===================
此外,當我檢查sql電子郵件日志歷史記錄時,我發現此錯誤:
郵件沒有排隊。 數據庫郵件已停止。 使用sysmail_start_sp啟動數據庫郵件。
每當您嘗試從數據庫郵件發送測試郵件時; 它會拋出以下錯誤消息:
消息14641,級別16,狀態1,過程sp_send_dbmail,郵件未排隊。 數據庫郵件已停止。 使用sysmail_start_sp啟動數據庫郵件。
首先,確保通過在SSMS中執行以下命令來啟用數據庫中的Service Broker消息傳遞:
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb'
如果上述查詢的結果為0,則激活服務代理。
激活Service Broker允許將消息傳遞到數據庫。 必須創建Service Broker端點才能從實例外部發送和接收消息。
要在數據庫中激活Service Broker,請使用以下命令:
USE master ; GO ALTER DATABASE DatabaseName SET ENABLE_BROKER ; GO
如果啟用了Service Broker,則通過在SQL Server Management Studio中執行以下查詢來確認是否啟用了數據庫郵件:
sp_configure 'show advanced', 1 GO RECONFIGURE GO sp_configure GO
如果結果集將run_value顯示為1,則啟用數據庫郵件。
如果禁用了“數據庫郵件”選項,請運行以下查詢以啟用它:
sp_configure 'Database Mail XPs', 1; GO RECONFIGURE; GO sp_configure 'show advanced', 0; GO RECONFIGURE; GO
啟用數據庫郵件后,啟動數據庫郵件外部程序在msdb數據庫上使用下面提到的查詢:
USE msdb ; EXEC msdb.dbo.sysmail_start_sp;
要確認已啟動數據庫郵件外部程序,請運行下面提到的查詢:
EXEC msdb.dbo.sysmail_help_status_sp;
如果啟動了數據庫郵件外部程序,則使用以下語句檢查郵件隊列的狀態:
EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'mail';
要解決的問題很少,首先檢查以確保通過執行以下操作來啟用數據庫Mail
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb'
如果上述結果為0
,請按照本指南激活服務代理
如果上面的結果為1
,則檢查數據庫郵件的狀態,執行以下語句:
EXECUTE dbo.sysmail_help_status_sp
要在郵件主機數據庫中啟動Database Mail,請在msdb數據庫中運行以下命令:
EXECUTE dbo.sysmail_start_sp
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.