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

时间:2012-05-17 14:55:04

标签: sql-server delphi client-server

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

我的客户端是否需要轮询数据库,或者是否有回调机制?

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

2 个答案:

答案 0 :(得分:6)

答案 1 :(得分:1)

不,你必须建立自己的“中间层”才能做到这一点。最简单的方法是轮询服务器。更复杂的解决方案是构建自己的“中间层”服务器,该服务器轮询数据库并将通知推送到客户端(使用您自己的客户端连接)。

中间解决方案是让服务器上有一个单独的客户端轮询您需要“监视”的表,并将“notfication flags”写入另一个可由客户端轮询的数据库表中。至少通过这种方式,客户端可以使用最少的数据轮询一个简单的表,该数据列出已经更改的内容,然后可以由另一个选择查询读取。客户的努力要少得多。