解决方案:

为什么不想使用触发器?如果正确使用它们,则是一件好事。如果我们将它们用作加强参照完整性的一种方法,那就是当它们从好到坏时。但是,如果将它们用于监视,则它们并不是真正的禁忌。

拥有以给定间隔运行的DTS作业(或者由Windows服务启动的作业)。每次运行时,它使用系统INFORMATION_SCHEMA表获取有关给定表的信息,并将此数据记录在数据存储库中。将与表结构有关的返回数据与上次返回的数据进行比较。如果不同,则说明结构已更改。

查询示例以返回有关表ABC中所有列的信息:

select * from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'ABC'

我们将根据定义"对表的更改"的精确程度来监视不同的列和INFORMATION_SCHEMA视图。

看一下CHECKSUM命令:

SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM sample_table WITH (NOLOCK);

只要表内容未更改,每次运行时它将返回相同的数字。

如何检查SQL Server表的变更?

如何在不使用触发器或者不以任何方式修改数据库结构的情况下监视SQL Server数据库中对表的更改?

如何监控数据表数据的变化?

日期:2020-03-23 10:48:21 来源:oir作者:oir