【问题标题】:Real time SQL database updates between multiple VB.NET clients多个 VB.NET 客户端之间的实时 SQL 数据库更新
【发布时间】:2014-03-14 07:14:27
【问题描述】:

我正在使用 SQL 数据库并且正在编写一个 VB.NET 客户端应用程序。此应用程序可同时在多台计算机上使用。如果其中一个客户端更新了数据库,我想让其他客户端知道更新。

【问题讨论】:

  • 您使用的是什么关系型数据库?另外我假设您的意思是在他们尝试更新之前发出通知,而不仅仅是检测并发违规?

标签: sql vb.net real-time


【解决方案1】:

如果您使用的是 MS SQL Server,您或许可以使用Service Broker notifications 在数据更新时向客户端推送通知。不过,这不是我个人使用过的东西。

【讨论】:

    【解决方案2】:
    1. 确保您的表具有 DateUpdated 列
    2. 读取表格时,将 dateUpdated 值保存到内存变量中
    3. 更新表时包括 DateUpdated
    4. 检查第 3 步中更新的行数。
    5. 如果第 4 步返回 0,则表示其他人在当前用户查看数据时更新了故事。

    请注意,这仅适用于您在保存数据时有兴趣检测更新的情况。如果您希望在当前显示的记录已更新时通知客户端应用程序,那么正如其他人所提到的,您将不得不使用某种通知服务。

    【讨论】:

    • 我一定是在你回复的同时把它作为一个问题向 OP 提出来的!
    • 您好 Raj,我希望客户能够了解数据库的任何更改。如上所述,通知服务看起来没有解决方案,因为在高峰时间(每 5 秒)更新频率。您可能还有其他想法吗?
    • 好吧,我没有完全阅读此链接msdn.microsoft.com/en-us/library/cc998491.aspx,但它说明了分布式 LINQ 查询和订阅/过滤等内容。
    【解决方案3】:

    环顾四周后,我发现了一些关于 Service Broker 的好信息。我还阅读了以下内容;

    "查询通知专为不经常更改的数据而设计。它也最好用于服务器端应用程序(如 ASP.NET 或远程处理)而不是客户端应用程序(如作为 Windows 窗体应用程序)。请记住,每个通知请求都在 SQL Server 中注册。如果您有大量客户端应用程序,每个应用程序都请求通知,这可能会在您的服务器上产生资源问题。Microsoft 的建议是客户端应用程序,您将查询通知的使用限制为不超过十个并发用户。”

    这是我关心的问题,因为我有大约 10 个表更新得非常频繁(每 5 秒)。

    也许有人在使用 Service Broker 通知来更频繁地更改数据方面有经验。

    非常感谢!

    马塞尔

    【讨论】:

    • 同意这听起来对您的场景不是特别有用。顺便说一句,Stack Overflow 问题和答案是分开的,因此您应该将这些附加信息编辑到问题中,而不是将其作为答案发布!
    • 抱歉,Martin 使用不当... :) 您对此可能有其他想法吗?除了 Service Broker 通知之外,还有其他可用的选项吗?谢谢,马塞尔
    • @Marcel 不是。如果您无法收到推送通知,那么我想您将不得不让您的应用程序轮询数据库本身并与时间戳或日期时间字段进行比较以查找已更改的记录。
    【解决方案4】:

    我也有同样的问题。 我的解决方案是创建一个审计表! 审计表包含所有表名和另一个带有日期时间的列。

    当用户更改数据时,也会更新审计表中的日期时间。

    所有用户每 4 秒检查一次审计表。如果其中一个表被更新,用户重新加载整个表是如何更新的。

    对不起我的英语。

    【讨论】:

      猜你喜欢
      • 2016-12-11
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多