是否有使用 Service Broker 服务/队列发送电子邮件的优雅方式?
我想EVENT NOTIFICATION
为 SQL Server 设置一个,并且我想为队列中的每条消息向操作员发送电子邮件。
根据这本书SQL Server 2005 DBA Street Smarts: A Real World Guide to SQL Server 2005 Certification Skills
,数据库邮件使用服务代理:
此外,Database Mail 是可扩展的,因为它使用 Service Broker 队列,允许异步处理请求,甚至在服务器在处理之前发生故障时保存请求。
也许我在这里太离谱了,但是,有没有办法可以使用 Service Broker 将消息直接发送到数据库邮件队列?
如果我必须设置一个存储过程来代表 Service Broker 发送电子邮件,我认为在 SQL Server 代理上设置一个作业来检查错误中我感兴趣的事件应该更容易记录并向操作员发送电子邮件。
我愿意接受建议。
当您调用时
sp_send_dbmail
,这正是正在发生的事情。然后就这样做。在接收通知的服务队列上创建一个激活的存储过程,并让它接收消息并调用
sp_send_dbmail
。我认为您正在尝试“切断中间人”并让 EVENT NOTIFICATION 将通知直接发送到 DB Mail 队列。这是不可能的,因为处理到达 DB Mail 队列的消息的代码期望消息具有某种格式(即由 创建的格式
sp_send_dbmail
)。Event Notifications 发送的消息将具有完全不同的格式,DB Mail 处理器会因为不理解它们而阻塞。为了防止发生这种情况,Service Broker 服务绑定到特定的合同,DB Mail 服务不接受Eventhttp://schemas.microsoft.com/SQL/Notifications/PostEventNotification
Notifications 使用的合同。