【发布时间】:2014-08-20 18:29:06
【问题描述】:
我们已经在我们的应用程序中实现了 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 代理的通知并没有在应用程序中返回。我们在分析器中看到以下错误
**找不到远程服务'SqlQueryNotificationService- ab49a23a-9beb-4a6f-a8b0-299bcfddbeda' 因为它没有 存在。 和
此消息已被删除,因为无法使用 TO 服务 成立。服务名称:“SqlQueryNotificationService-58237ce1- aa4d-4999-9fd8-d0b78c1d932b”。消息来源:“本地”。**
对此的任何帮助都将非常感激。
【问题讨论】:
-
您并没有耗尽数据阅读器(实际上是丢弃它)。也许这会阻止完全设置依赖项。
标签: c# asp.net-mvc sql-server-2008