SQL依赖于SQL Server 2008 Express

时间:2011-08-05 11:06:51

标签: sql-server sql-server-express sqldependency

我有一个成功使用SQL Server 2008 Standard Edition的SqlDependency的应用程序。但是,如果我将连接字符串切换到SQL Server 2008 express(启用Broker),它将停止工作。

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

更新。 “停止工作”我的意思是SqlDependency不会引发通知

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分: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