对SQL Server 2008 Express的SQL依赖性

问题描述 投票:2回答:2

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

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

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

sql-server sql-server-express sqldependency
2个回答
5
投票

为了了解SQL依赖关系的工作方式,建议您阅读The Mysterious Notification。要对其进行故障排除,请遵循正常的Troubleshooting Dialogs步骤。正如您所发现的文章一样,典型的罪魁祸首确实是Service Broker消息传递所需的EXECUTE AS上下文。从transmission_status中的通知消息的sys.transmission_queue中可以轻松地看到这一点,将数据库所有者更改为有效的登录名(sys.transmission_queue)即可解决此问题。但是,可能还有其他问题。我的链接中的故障排除步骤将帮助您找到它们。


3
投票

正如@Remus指出的那样,我基于误导性文档的假设是错误的:尽管许多在线资源都指出它不完全支持SSB,但SQL Server Express确实在某种程度上支持Service Broker。不过,将其保留在此处,以便搜索可以产生随后的对话框。

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

ALTER AUTHORIZATION ON DATABASE::[<dbname>] TO [sa]

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

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

© www.soinside.com 2019 - 2024. All rights reserved.