2

我有一个应用程序成功地将 SqlDependency 与 SQL Server 2008 标准版一起使用。但是,如果我将连接字符串切换到 SQL Server 2008 express(启用了 Broker),它就会停止工作。

我不确定它是否特定于 SQL Server Express,但我应该遵循哪些步骤来找出问题的原因?

更新。“停止工作”是指 SqlDependency 不会引发通知

4

2 回答 2

5

要了解 SQL 依赖项的工作原理,我建议您阅读The Mysterious Notification。要对其进行故障排除,请按照正常的故障排除对话框步骤进行操作。正如您在文章中发现的那样,典型的罪魁祸首确实是EXECUTE ASService Broker 消息传递所需的上下文。transmission_status您可以从通知消息中轻松看到这一点,sys.transmission_queue并将数据库所有者更改为有效的登录名 ( ALTER AUTHORIZATION ON DATABASE::[<dbname>] TO [sa]) 将修复它。但是,可能还有其他问题。我的链接中的故障排除步骤将帮助您找到它们。

于 2011-08-05T17:01:17.557 回答
3

正如@Remus 所指出的,我基于误导性文档的假设是错误的:SQL Server Express 确实在一定程度上支持 Service Broker,尽管许多在线资源表明它并不完全支持 SSB。将其保留在这里,以便搜索可能会产生随后的对话。

似乎 SqlDependency 依赖于查询通知。查询通知又依赖于 Service Broker。SQL Server Express 不支持 Service Broker。此页面未明确列出查询通知:

http://msdn.microsoft.com/en-us/library/cc645993(SQL.100).aspx

但是从那里您可以看到 Express 仅支持 Service Broker 作为客户端,并且从以下页面中您可以看到 Service Broker 是一个依赖项(不是双关语):

http://msdn.microsoft.com/en-us/library/ms130764(v=SQL.100).aspx

于 2011-08-05T12:26:04.667 回答