【问题标题】:Notification about Database Change数据库变更通知
【发布时间】:2011-09-02 16:21:49
【问题描述】:

我正在尝试使用任何用户提交的更改来更新在不同 PC 上运行的桌面 UI 的场景。例如:

  1. Application1 安装在 PC1、PC2 和 PC3 上。
  2. 假设所有 PC 都在运行此应用程序。
  3. 假设 PC1 上的用户 1 更改数据并提交到数据库
  4. PC2 和 PC3 上的 UI 应根据更改进行更新,而无需轮询或从数据库中提取数据。

任何人都可以建议一种方法来通知我的中间层服务有关数据库更改的信息,然后我可以将其转发给所有注册的客户端。当表更改(插入/更新/删除)时,SQL Notification Services 或 Service Broker 会通知吗?任何建议都会有所帮助。

【问题讨论】:

  • 您希望如何在不与数据库通信的情况下通过对数据库的更改来更新您的客户端?
  • 通知服务已停止。也许看看查询通知? msdn.microsoft.com/en-us/library/ms130764.aspx 这仍然需要客户端以某种方式检索新数据。
  • 感谢您的回复。我最终会从数据库中提取数据,但只有当我收到来自服务器的拉取通知时。看起来查询通知可能是 Remus 建议的答案。我计划通过一个服务层来做到这一点,该服务层会将这个通知传播给所有注册的客户。
  • 它的响应有点晚,但最后我已经实现了查询通知,如果我注册一个表时它工作正常我注册了 2 个表我只从我注册通知的最后一个表中收到通知。有什么想法吗?

标签: sql sql-server wcf sql-server-2005 sql-server-2008


【解决方案1】:

Query Notifications 正是这样做的。当服务器上的数据发生更改时,您会收到通知,您必须再次查询数据以刷新您的 UI。一个简单的实现是使用 LinqToCache 并将 OnInvalidated 处理程序添加到 CachedQueryOptions 对象。

【讨论】:

  • 感谢 Remus 的建议,这对我来说听起来像是一个解决方案。我将实施它,看看它是否有效。但是问题是,当您说查询通知时,它是否也需要任何 Service Broker 的东西? SQL Server 2005 和以后的 SQL Server 2008 R2 是否支持它?
  • 查询通知依赖于 Service Broker 来传递它的通知。这一切都在我帖子的第一个链接中进行了描述。
猜你喜欢
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 2016-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多