数据库对象跟踪
Posted
技术标签:
【中文标题】数据库对象跟踪【英文标题】:Database objects tracking 【发布时间】:2013-02-12 08:51:18 【问题描述】:以前有人实施过吗? IE。数据库实体的更改跟踪机制。所以我们可以看到实体的不同版本。只是不想重新发明***,因为它似乎是软件工程中的一项常见任务。我对包含一对多和多对多关系的复杂实体跟踪特别感兴趣,即属性分散在多个表中的实体。某种数据库级别的版本控制。 有什么想法吗?
附:我使用 SQL Server 2008 和实体框架(代码优先)作为 ORM。
【问题讨论】:
你看过变更数据捕获msdn.microsoft.com/en-us/library/bb522489.aspx吗? 仅在删除、更新或插入时使用。在选择语句期间增加了大量开销。唯一的问题是,一旦打开它就无法在不实例化新对象的情况下将其关闭 @Phil 哇!它看起来非常有前途:) 谢谢伙计! 【参考方案1】:变更数据捕获是一项很棒的功能,但它仅适用于企业版 SQL Server。
您可以尝试的其他方法是:
DDL 和 DML 触发器 - 为要跟踪的所有表和/或对象编写触发器,并将以前的值存储在存储表中。这需要你做一些工作,但它肯定会奏效。有一个基于触发器的审计工具 - ApexSQL Audit。您可以安装试用版,查看如何在那里创建触发器,然后为您的环境创建类似的东西。
版本控制 - 有 3rd 方工具允许您对对象和数据进行版本控制,并且您可能可以自动化这些,因此您不会忘记将某些内容放入版本控制中。试试 Red Gate 的 SQL Source Control 或 ApexSQL 的 ApexSQL Version。
读取事务日志 - 如果您的数据库处于完全恢复模式,则几乎所有数据都存储在事务日志中(DML 和 DDL,SELECT 除外)。不幸的是,您只能使用ApexSQL Log 或Toad for SQL Server 等第三方工具来执行此操作。
【讨论】:
以上是关于数据库对象跟踪的主要内容,如果未能解决你的问题,请参考以下文章