检测数据库查询更新

本文关键字:更新 查询 数据库 检测 | 更新日期: 2023-09-27 18:24:10

场景如下:

  1. 客户端A和客户端B都已登录到应用程序
  2. 客户端A和客户端B已填充其网格视图(显示上载的文件)
  3. 客户端A将文件上载到数据库
  4. 客户端B必须检测到添加了数据(客户端a上载的文件),并重新填充网格视图

我需要知道步骤4的工作流程。我读过关于使用SqlDependency的文章,并看过这篇文章http://rusanu.com/2007/11/01/remove-pooling-for-data-changes-from-a-wcf-front-end/
但是,如果我没有错的话,本文使用的NotificationServices在SQLServer2008中已被弃用。我还想知道当检测到数据库中的查询结果发生变化时,如何在客户端中注册代码。感谢

已编辑
目前的选项有SqlDependency、trigger、WCF、Observer模式。如果有人知道这些解决方案中的任何一个是否可以/不能在我的场景中实施,请随时发表评论并告诉我。

检测数据库查询更新

您可以在应用程序层中执行此操作。您可以使用集中式方法/类来更新数据库中的文件。然后,您可以注册观察者(观察者模式)来获得任何更新的通知。通过这种方式,当数据库中的数据发生更改时,您可以刷新多个客户端。

只有在其他流程或直接数据库更新没有数据更改的情况下,上述建议才会起作用。

您错了,文章并没有使用NotificationServices。文章中使用了以下内容:

  • 顶部是客户端调用的web服务(WCF双工通道);客户端有一个回调,当数据发生变化时会调用该回调;这也可以与数据库轮询一起使用;另一方面,文章使用更先进的技术对数据更改做出反应
  • 在底层数据访问层,应用服务器使用普通的ADO.Net连接采用SqlDependency;使用该技术,订阅者附加一个事件将在数据更改时被解雇;服务器将立即发送更新后的数据到客户端
  • 在数据库端,SQL Server Service Broker由SqlDependency使用内部避免投票;如果你知道如何手动完成操纵Service Broker对象

因此,这些技术都没有使用过时的NotificationServices。您需要启动的一切(即使您使用SQL Server 2012)都在这篇文章中进行了描述。