记录对SQL Server数据库的更改并将其发送到客户端的最佳方式


Best way to record changes to a SQL Server Database and send them to the client?

我有一个简单的SQL Server数据库,包含12个表。每个表有100到1000行。当我的web应用程序加载时,这些表会直接保存到数组中。从那时起,将使用数组,而不是直接访问表。每当其他用户更改数据库中的数据时,都需要更新数组。

为此,我计划使用ajax每隔10秒轮询一次PHP脚本。该脚本检查这12个表中的任何一个表上的更改,并仅向客户端机器返回已进行的更改,而不是整个表。

问题是,我不知道如何记录对这12个表的任何更改,然后将这些更改返回到客户端机器,以便在Javascript中对其进行解释以更新数组。

跟踪SQL Server中表更改的最佳/最简单方法是什么?


也许有一种更清晰的方法可以问我更广泛适用的问题——有什么方法可以查询或发现SQL Server表随时间的变化?

您还可以研究变更数据捕获。这听起来正是你所需要的。以下是BOL:http://msdn.microsoft.com/en-us/library/bb522489%28v=sql.105%29.aspx.下面是Pinal Dave的一篇文章:http://blog.sqlauthority.com/2009/08/15/sql-server-introduction-to-change-data-capture-cdc-in-sql-server-2008/

基本上,它记录所有更改(插入、更新和删除),并允许您从系统表中提取信息。不幸的是,我自己对此了解不够,只能给你指明正确的方向。

我相信我第一眼就误解了你的问题,但看起来你把数据存储在了一个javascript数组中。如果是这样,请在javascript中保留一个"上次更新"时间戳,并在数据库中维护一个"最后更新"列。正如其中一条评论所说,在这里实际编码有点多,但有一个想法:

initial.php-加载一个javascript变量中内存中所有数据的页面,该页面将轮询checkforupdates.php?lastUpdate=[最近更新的时间戳]

checkforupdates.php-使用"WHERE lastUpdate>providedTimestamp"运行SQL查询,echo json_encode($data)

这足以为你指明正确的方向吗?