将更改历史记录保存到SQL Server 2008中的XML字段
-
03-07-2019 - |
题
我参与了几个将XML数据保存到数据库中的应用程序。到目前为止,所有这些都只是用新的XML内容覆盖了当前的XML内容。
我想将对XML的更改保存到数据库,但不会覆盖当前数据库中的内容。
如果只是为更改创建新行并保留旧行不完整,我还可以使用其他选项吗?
我一直在考虑将差异保存为实际的文本差异,这并不总是适用于XML。
我还想要这个吗?
解决方案
您可能需要考虑添加一个审核表来放在数据表旁边。
它只有您感兴趣的列跟踪历史记录以及日期时间列(记录更改日期),通常您也需要一些用户信息(即从连接中拉出登录用户或在插入/更新中提供用户名。
然后在数据表上创建Update触发器,并从已删除的伪表中将新行插入到审计表中。如果您正在执行更新,这将包含更新之前的数据,因为更新实际上是删除和插入。
还有一个更通用的解决方案,建议使用SQL CLR抽象实现一个唯一的审计表并触发您希望审计的每个数据表: http://www.sqljunkies.ddj.com/Article/4CD01686-5178-490C-A90A-5AEEF5E35915.scuk
不隶属于 StackOverflow