有没有人以前实现过这个?即数据库实体的更改跟踪机制。所以我们可以看到实体的不同版本。只是不想重新发明轮子,因为它似乎是软件工程中的常见任务。我特别感兴趣的是复杂的实体跟踪,包括一对多和多对多关系,即I.e。属性分散在多个表中的实体。某种数据库级版本控制。 有什么想法吗?
P.S。我正在使用SQL Server 2008和Entity Framework(代码优先)作为ORM。
答案 0 :(得分:1)
更改数据捕获是一项很棒的功能,但它仅适用于SQL Server的企业版。
您可以尝试的其他事项是:
DDL和DML触发器 - 为要跟踪的所有表和/或对象写入触发器,并将先前的值存储在存储表中。这需要你的一些工作,但它肯定会有效。有一个基于触发器的审核工具 - ApexSQL Audit。您可以安装试用版,查看如何在那里创建触发器,然后为您的环境创建类似的东西。
版本控制 - 有第三方工具允许您对对象和数据进行版本控制,您可以自动执行这些工具,这样您就不会忘记在版本控制中添加内容。尝试来自Red Gate的SQL Source Control或来自ApexSQL的ApexSQL Version。
读取事务日志 - 如果数据库处于完全恢复模式,则几乎所有数据都存储在事务日志中(DML和DDL除SELECT之外)。很遗憾,您只能使用第三方工具执行此操作,例如ApexSQL Log或Toad for SQL Server。