sql server 2008负载均衡环境下,sqlachedependency不工作
本文关键字:sqlachedependency 工作 环境 server 2008 负载 sql | 更新日期: 2023-09-27 18:18:42
我们已经在我们的应用程序中实现了sqlcachedependency。根据一个数据库表,我们有多个缓存,并使用sql监视器设置sql缓存策略,如下所示。
policy = new CacheItemPolicy();
//connection string name
var connectionString = connectionstring;
//SQlDependency Cache
SqlDependency.Start(connectionString);
SqlChangeMonitor monitor = null;
using (var connection = new SqlConnection(connectionString))
{
using (var command = new SqlCommand("SELECT col1,col2 FROM dbo.table1", connection))
{
var dependency = new SqlDependency(command);
connection.Open();
command.ExecuteReader();
monitor = new SqlChangeMonitor(dependency);
}
}
policy.ChangeMonitors.Add(CreateMonitor());
此方法在添加多个缓存时调用。当我们检查开发机器时,一切正常。但是,一旦我们将应用程序上传到负载平衡的QA机器(QA1,QA2,QA3),它就不能工作了。
所有的授权权限和sql代理启用都是在数据库上完成的。
当我们检查sql分析器时,我们看到订阅正在数据库中注册。但是,当对表进行更新时,来自sql代理的通知不会在应用程序中返回。我们在profiler
中看到以下错误**无法找到远程服务'SqlQueryNotificationService-ab49a23a - 9 - beb 4 - a6f a8b0 - 299 bcfddbeda'因为事实并非如此存在。和
此消息已被丢弃,因为TO服务无法发现。服务名称:"SqlQueryNotificationService-58237ce1-"aa4d - 4999 - 9 - fd8 d0b78c1d932b"。消息来源:"Local".**
终于找到了答案。基本上是许可问题。下面的链接帮助我授予权限,解决了这个问题
http://social.msdn.microsoft.com/forums/sqlserver/en us/bd195da8 - 93 - b2 - 43 - c6 - 8 f59 - 674 f5fb9d618/cannot -发现- - - -队列sqlquerynotificationserviceguid?forum=sqlservicebroker