Sql-Server

使用 Service Broker 發送電子郵件的優雅方式

  • March 26, 2012

是否有使用 Service Broker 服務/隊列發送電子郵件的優雅方式?

我想EVENT NOTIFICATION為 SQL Server 設置一個,並且我想為隊列中的每條消息向操作員發送電子郵件。

根據這本書SQL Server 2005 DBA Street Smarts: A Real World Guide to SQL Server 2005 Certification Skills,數據庫郵件使用服務代理:

此外,數據庫郵件是可擴展的,因為它使用 Service Broker 隊列,允許非同步處理請求,甚至在伺服器在處理之前發生故障時保存請求。

也許我在這裡太離譜了,但是,有沒有辦法可以使用 Service Broker 將消息直接發送到數據庫郵件隊列?

如果我必須設置一個儲存過程來代表 Service Broker 發送電子郵件,我認為在 SQL Server 代理上設置一個作業來檢查錯誤中我感興趣的事件應該更容易記錄並向操作員發送電子郵件。

我願意接受建議。

有沒有辦法可以使用 Service Broker 將消息直接發送到數據庫郵件隊列

當您呼叫時sp_send_dbmail,這正是正在發生的事情。

我想為 SQL Server 設置一個事件通知,並且我想為隊列中的每條消息向操作員發送電子郵件

然後就這樣做。在接收通知的服務隊列上創建一個啟動的儲存過程,並讓它接收消息並呼叫sp_send_dbmail

我認為您正在嘗試“切斷中間人”並讓 EVENT NOTIFICATION 將通知直接發送到 DB Mail 隊列。這是不可能的,因為處理到達 DB Mail 隊列的消息的程式碼期望消息具有某種格式(即由 創建的格式sp_send_dbmail)。Event Notifications 發送的消息將具有完全不同的格式,DB Mail 處理器會因為不理解它們而阻塞。為了防止發生這種情況,Service Broker 服務綁定到特定的契約,DB Mail 服務不接受Event http://schemas.microsoft.com/SQL/Notifications/PostEventNotificationNotifications 使用的契約。

引用自:https://dba.stackexchange.com/questions/15613