SQLCacheDependency在sql server 2008的负载均衡环境中不起作用

时间:2014-08-20 07:04:10

标签: c# asp.net-mvc sql-server-2008

我们已在应用程序中实现了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 profiler时,我们看到订阅正在数据库中注册。但是来自sql代理的通知,并且在对表进行更新时不在应用程序中工作。我们在Profiler中看到以下错误

**无法找到远程服务'SqlQueryNotificationService- ab49a23a-9beb-4a6f-a8b0-299bcfddbeda'因为它没有  存在。 和

此消息已被删除,因为TO服务无法删除  找到。服务名称:“SqlQueryNotificationService-58237ce1-  aa4d-4999-9fd8-d0b78c1d932b“。消息来源:”本地“。**

任何有关这方面的帮助都会非常值得注意。

1 个答案:

答案 0 :(得分:0)