我希望能够支持任何SQL Server 2000 SP4或更新版本。我的应用程序是另一家公司产品的附加数据可视化工具。我们的客户基础有数千人,因此我不想在每次安装时都需要修改第三方供应商的表。
通过“对表的更改”,我指的是对表数据的更改,而不是对表结构的更改。
最终,我希望更改会触发我的应用程序中的事件,而不必定期检查更改。
根据我的要求(无触发器或模式修改,SQL Server 2000和2005),最好的做法似乎是在T-SQL中使用BINARY_CHECKSUM
函数。我计划实现的方式如下:
每隔X秒运行以下查询:
SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*))
FROM sample_table
WITH (NOLOCK);
将其与存储的值进行比较。如果值发生了变化,请使用以下查询逐行遍历表格:
SELECT row_id, BINARY_CHECKSUM(*)
FROM sample_table
WITH (NOLOCK);
并将返回的校验和与存储的值进行比较。