小编Mic*_*sox的帖子

SqlDependency随时间丢失订阅

我已经在.NET 3.5应用程序中使用SqlDependency超过3年没有任何问题.方案如下:

  1. 使用SqlDependency查看表的中央窗口服务(让我们称之为表A)
  2. 使用WPF应用程序的多个用户,每个用户观看一个表时具有唯一的SqlDependency(表A再次)
  3. 用户将一个工作单元排队,以便在表A中进行处理
  4. SqlDependency触发Windows服务
  5. Windows服务处理表A中的所有未完成项,并将结果保存到表A.
  6. 为结果可用的每个用户触发唯一的SqlDependency
  7. 用户处理他们的工作

最近我将系统升级到.NET 4.5,并开始看到将更改放入我们正在监视的表中的问题,但SqlDependency永远不会触发(在服务和用户应用程序中).我开始深入研究这一点,并在我的日志中注意到,在某些时候我会重新注册SqlDependency,但之后通知永远不会触发.

看到此行为后,我决定在SQL Server上运行探查器来捕获订阅事件.从捕获的数据中,我注意到有时订阅将由一个用户注册(具有唯一ID),但随后将由另一个用户触发(具有相同的唯一ID).这通常发生在我上面提到的服务和WPF应用程序的一个或多个用户身上.(我在分析器结果中附上了该问题的屏幕截图)

这是预期的行为吗?是否可以针对不同的用户触发通知?这是否指向应用程序层中的问题?任何帮助表示赞赏.

Profiler结果

c# sql-server-2008 sqldependency .net-4.5

41
推荐指数
1
解决办法
1657
查看次数

标签 统计

.net-4.5 ×1

c# ×1

sql-server-2008 ×1

sqldependency ×1