客户端 - 服务器数据库应用程序:如何通知客户端数据已更改?

客户端 - 服务器数据库应用程序:如何通知客户端数据已更改?

问题描述:

是否可能知道数据库中某些表的内容何时以及是否已更改?
我的SQL Server如何通知客户端应用程序数据被另一个用户更改了?如何使用dbGo实现查询通知?

Is it possible to know when and if the contents of certain tables in a database has changed? How can my SQL Server notify the client applications that the data was changed by another user? How to implement query notifications with dbGo ?

我的客户端需要轮询数据库,还是有一个回调机制?

Do my clients need to poll the database, or is there a callback mechanism for this?

我的客户端是一个带有 TADODataSet 的Delphi应用程序,我的服务器是SQL Server 2005/2008,为多个客户端提供服务。

My client is a Delphi application with TADODataSet, and my server is SQL Server 2005/2008, serving multiple clients.

Delphi dbGo 控制项不支持 查询通知 ,因此要么轮询数据库,要么尝试检查eg以下某些:

The Delphi dbGo controls does not support Query Notifications, so either poll the database or try to check e.g. some of the following:

  • WMI Provider for Server Events - MSSQL Service Broker
  • DA-SOFT AnyDAC TADEventAlerter component - Query Notifications mechanism
  • Devart SDAC TMSChangeNotification component - Query Notifications mechanism