【问题标题】:Saving change history to XML field in SQL Server 2008将更改历史记录保存到 SQL Server 2008 中的 XML 字段
【发布时间】:2009-03-02 22:08:13
【问题描述】:

我曾开发过几个将 XML 数据保存到数据库中的应用程序。迄今为止,它们都只是用新的 XML 内容覆盖了当前的 XML 内容。

我想将对 XML 的更改保存到数据库中,但不覆盖数据库中当前的内容。

除了为更改创建新行并保持旧行不变,我还可以使用哪些其他选项?

我曾考虑将差异保存为实际的文本差异,但这并不总是适用于 XML。

我想要这个是不是疯了?

【问题讨论】:

    标签: .net sql-server xml diff


    【解决方案1】:

    您可能需要考虑在数据表旁边添加一个审计表。

    它只会包含您有兴趣跟踪历史记录的列以及日期时间列(记录更改日期),通常您还需要一些用户信息(即从连接中拉出登录用户或在插入/更新中提供用户名)。

    然后在您的数据表上创建一个更新触发器,并将新行从已删除的伪表中插入您的审计表中。如果您正在执行更新,这将包含更新之前的数据,因为更新实际上是删除和插入。

    还有一个更通用的解决方案,它建议使用 SQL CLR 抽象出实现一个唯一的审计表并为您希望审计的每个数据表触发:http://www.sqljunkies.ddj.com/Article/4CD01686-5178-490C-A90A-5AEEF5E35915.scuk

    【讨论】:

    • 我真的不想使用审计表。我更多地考虑颠覆如何保持文件差异。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    相关资源
    最近更新 更多