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

时间:2013-02-13 17:57:03

标签: php sql-server ajax sql-server-2008

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

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

问题是,我不知道如何记录对这12个表的任何更改,然后将这些更改以可以在Javascript中解释为更新数组的方式返回到客户端计算机。

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


也许更清楚的方式来提出更广泛适用的问题 - 有哪些方法可以查询或发现SQL Server表随时间的变化?

2 个答案:

答案 0 :(得分:2)

您还可以查看更改数据捕获。听起来就像你需要的那样。这是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/

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

答案 1 :(得分:1)

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

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

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

这足以让你指出正确的方向吗?