我有一个应用程序,成功使用SqlDependency与SQL Server 2008标准版。但是,如果我切换连接字符串到SQL Server 2008 express(启用Broker)它停止工作。
我不确定它是否是SQL Server Express特定的,但我应该遵循哪些步骤来找出问题的原因?
更新。我所说的"停止工作"是指SqlDependency
要了解SQL依赖是如何工作的,我建议您阅读神秘通知。要对其进行故障排除,请遵循正常的故障排除对话框步骤。正如您在文章中发现的那样,典型的罪魁祸首确实是Service Broker消息传递所需的EXECUTE AS
上下文。您可以很容易地从sys.transmission_queue
中的通知消息的transmission_status
中看到这一点,并且将数据库所有者更改为有效的登录(ALTER AUTHORIZATION ON DATABASE::[<dbname>] TO [sa]
)将修复它。然而,可能还有其他问题。我链接中的故障排除步骤将帮助您找到它们。
正如@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
但是从这里你可以看到Service Broker仅作为客户端被Express支持,并且从下面的页面你可以看到Service Broker是一个依赖项(没有双关语的意思):
http://msdn.microsoft.com/en-us/library/ms130764 (v = SQL.100) . aspx罢工