如何判断数据库记录是否已更改?

时间:2013-12-10 22:51:43

标签: c# sql-server entity-framework

我正在编写一个按计划运行的流程,并定期扫描SQL Server数据库中的记录并检查这些记录的更改。不幸的是,这个数据库中的记录没有以任何方式进行版本化/加时间戳,我无法更改模式,因为它不是我的数据库。如果没有比较每个字段,我不知道如何检查是否实际发生了变化。

现在我正在使用实体框架进行所有数据访问,但如果需要,我可以切换到直接查询。有一个简单的方法吗?

编辑:我需要一种方法来检查每个记录的变化,而不是整个数据库/表。

2 个答案:

答案 0 :(得分:2)

我认为检查每条记录不适用于大型数据库(可能需要永久)

但您可以计算每行的哈希并将其存储在您的应用数据库中。然后在每次运行时重新计算哈希并与应用程序数据库中的内容进行比较。

此外,我知道您无法更改架构,但也许您可以将触发器添加到将记录更改的受监控数据库中?

另一种选择可能是在接收复制数据的数据库中设置复制和检测更改(使用上述触发器)(但我不得不承认我从未配置过复制,我可能对它的工作方式有误)。

答案 1 :(得分:1)

如果您使用的是SQL Server 2008或更高版本,则可以使用“更改数据捕获”或“更改跟踪”。这是a link to the MSDN documentation