如何检测数据库数据更改

时间:2013-01-27 13:55:28

标签: sql sql-server sql-server-2008 checksum

在Sql Server数据库中,有没有办法检测数据更改,我尝试使用checksum& checksum_agg但在单个表上,我想要的是拥有所有表的整个校验和(哈希)

我用于签名表的查询是

select isnull(CHECKSUM_AGG(CHECKSUM(*)),0) from mytable

3 个答案:

答案 0 :(得分:1)

听起来你需要INSERT / UPDATE / DELETE触发器。

我不确定这是否有效。随着表的增长,计算将变得更加昂贵。您确定每次数据更改时都需要这样做吗?变更多久一次?每次操作都会浪费很多工作。也许您可以在需要时根据要求而不是每次写入操作来执行此操作。

答案 1 :(得分:1)

您可以使用'SP_MSFOREACHTABLE'命令在所有表中运行循环并汇总总和

答案 2 :(得分:0)

SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) as test FROM yor_table_name WITH (NOLOCK);

可以用这段代码检测sql server的变化,这里有一个号码池,每次变化选择一个号码,一个号码不会连续出现两次。