【发布时间】:2014-03-14 07:14:27
【问题描述】:
我正在使用 SQL 数据库并且正在编写一个 VB.NET 客户端应用程序。此应用程序可同时在多台计算机上使用。如果其中一个客户端更新了数据库,我想让其他客户端知道更新。
【问题讨论】:
-
您使用的是什么关系型数据库?另外我假设您的意思是在他们尝试更新之前发出通知,而不仅仅是检测并发违规?
我正在使用 SQL 数据库并且正在编写一个 VB.NET 客户端应用程序。此应用程序可同时在多台计算机上使用。如果其中一个客户端更新了数据库,我想让其他客户端知道更新。
【问题讨论】:
如果您使用的是 MS SQL Server,您或许可以使用Service Broker notifications 在数据更新时向客户端推送通知。不过,这不是我个人使用过的东西。
【讨论】:
请注意,这仅适用于您在保存数据时有兴趣检测更新的情况。如果您希望在当前显示的记录已更新时通知客户端应用程序,那么正如其他人所提到的,您将不得不使用某种通知服务。
【讨论】:
环顾四周后,我发现了一些关于 Service Broker 的好信息。我还阅读了以下内容;
"查询通知专为不经常更改的数据而设计。它也最好用于服务器端应用程序(如 ASP.NET 或远程处理)而不是客户端应用程序(如作为 Windows 窗体应用程序)。请记住,每个通知请求都在 SQL Server 中注册。如果您有大量客户端应用程序,每个应用程序都请求通知,这可能会在您的服务器上产生资源问题。Microsoft 的建议是客户端应用程序,您将查询通知的使用限制为不超过十个并发用户。”
这是我关心的问题,因为我有大约 10 个表更新得非常频繁(每 5 秒)。
也许有人在使用 Service Broker 通知来更频繁地更改数据方面有经验。
非常感谢!
马塞尔
【讨论】:
我也有同样的问题。 我的解决方案是创建一个审计表! 审计表包含所有表名和另一个带有日期时间的列。
当用户更改数据时,也会更新审计表中的日期时间。
所有用户每 4 秒检查一次审计表。如果其中一个表被更新,用户重新加载整个表是如何更新的。
对不起我的英语。
【讨论】: