我们已在应用程序中实现了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“。消息来源:”本地“。**
任何有关这方面的帮助都会非常值得注意。
答案 0 :(得分:0)