排除查询通知故障:已注册订阅、未生成事件消息、已删除订阅

如果已成功注册订阅,但某个应该生成通知的查询没有生成通知(即使删除了订阅也是如此),则 SQL Server 就无法将事件消息传递到指定的服务。在这种情况下,更新数据的语句可能会返回错误,或者 Service Broker 可能会向 QueryNotificationErrorsQueue 发送错误。SQL Server 将收到这些错误消息并将这些错误写入 SQL Server 错误日志。

产生此问题的常见原因是订阅请求中包含的服务名称与数据库中的服务不匹配。

如果更改数据的命令未报告错误,则最可能出现的问题是接收请求的服务没有经过正确配置。若要诊断该问题,可检查 SQL Server 错误日志。

还可以确认 SQL Server 是否使用 SQL Server Profiler生成了通知消息。在 SQL Server Profiler中,启动一个跟踪以显示 Query Notifications 类别中的事件。当 SQL Server 生成通知消息时,还会生成一个带有 3 - Subscription Fired事件子类QN:Subscription 事件。

有关排除 Service Broker 路由和消息传递故障的详细信息,请参阅路由和消息传递故障排除