【发布时间】:2012-02-28 12:03:30
【问题描述】:
我想在我的应用程序中实现历史记录功能,但我想跳过 为每个业务对象数据表创建历史数据表。
我正在考虑创建一个历史数据表,其中包含一个标识列和一个带有更改数据的 XML 列,如下所示
ID: int
XML: Data
Name: data table name
此方法是否由某人实施,或者您是否看到有关此架构的任何限制?
【问题讨论】:
标签: sql-server sql-server-2008 history
我想在我的应用程序中实现历史记录功能,但我想跳过 为每个业务对象数据表创建历史数据表。
我正在考虑创建一个历史数据表,其中包含一个标识列和一个带有更改数据的 XML 列,如下所示
ID: int
XML: Data
Name: data table name
此方法是否由某人实施,或者您是否看到有关此架构的任何限制?
【问题讨论】:
标签: sql-server sql-server-2008 history
多年来,我一直使用这篇文章的修改版本 - Adding simple trigger-based auditing to your SQL Server database。
它使用旧的 INFORMATION_SCHEMA 视图,因为它依赖于在任何较新的 DMV 中都不可用的列位置(例如 sys.tables、sys.columns)。除此之外,它会像魅力一样飞行和工作。
如果性能成为问题(这种情况很少见),您可以考虑使用 Service Broker 实现异步触发器以写入历史记录表。
【讨论】:
由于您使用的是2008,您可以尝试使用Change Data Capture。
【讨论】: