4

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

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

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

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


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

4

2 回答 2

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 /

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

于 2013-02-13T19:21:29.540 回答
1

我相信我乍一看误读了您的问题,但您似乎将数据存储在 javascript 数组中。如果是这样,请在 javascript 中保留“最后更新”时间戳,并在数据库中保留“最后更新”列。正如其中一条评论所说,在这里实际编码有点多,但有一个想法:

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

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

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

于 2013-02-13T18:19:10.047 回答