簡體   English   中英

sql server sp_send_dbmail

[英]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啟動數據庫郵件。


  1. 首先,確保通過在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 
  2. 如果啟用了Service Broker,則通過在SQL Server Management Studio中執行以下查詢來確認是否啟用了數據庫郵件:

     sp_configure 'show advanced', 1 GO RECONFIGURE GO sp_configure GO 

    如果結果集將run_value顯示為1,則啟用數據庫郵件。

  3. 如果禁用了“數據庫郵件”選項,請運行以下查詢以啟用它:

     sp_configure 'Database Mail XPs', 1; GO RECONFIGURE; GO sp_configure 'show advanced', 0; GO RECONFIGURE; GO 
  4. 啟用數據庫郵件后,啟動數據庫郵件外部程序在msdb數據庫上使用下面提到的查詢:

     USE msdb ; EXEC msdb.dbo.sysmail_start_sp; 
  5. 要確認已啟動數據庫郵件外部程序,請運行下面提到的查詢:

     EXEC msdb.dbo.sysmail_help_status_sp; 
  6. 如果啟動了數據庫郵件外部程序,則使用以下語句檢查郵件隊列的狀態:

     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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM