如何在不使用触发器或以任何方式修改数据库结构的情况下监视SQL Server数据库以查找表的更改?我首选的编程环境是.NET和C#.
我希望能够支持任何SQL Server 2000 SP4或更新版本.我的应用程序是另一家公司产品的螺栓式数据可视化.我们的客户群数以千计,因此我不想在每次安装时都要求我们修改第三方供应商的表.
通过"更改表",我的意思是更改表数据,而不是更改表结构.
最终,我希望更改在我的应用程序中触发事件,而不是必须间隔检查更改.
根据我的要求(没有触发器或模式修改,SQL Server 2000和2005),最好的行动方案似乎是BINARY_CHECKSUM
在T-SQL中使用该函数.我计划实施的方式是这样的:
每隔X秒运行以下查询:
SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*))
FROM sample_table
WITH (NOLOCK);
Run Code Online (Sandbox Code Playgroud)
并将其与存储值进行比较.如果值已更改,请使用查询逐行遍历表:
SELECT row_id, BINARY_CHECKSUM(*)
FROM sample_table
WITH (NOLOCK);
Run Code Online (Sandbox Code Playgroud)
并将返回的校验和与存储的值进行比较.