当前位置:  开发笔记 > 数据库 > 正文

将表中所有字段的日志更改记录到另一个表(SQL Server 2005)

如何解决《将表中所有字段的日志更改记录到另一个表(SQLServer2005)》经验,为你挑选了1个好方法。

我想将对表中所有字段所做的更改记录到另一个表中.这将用于保存对该表所做的所有更改的历史记录(您的基本更改日志表).

在SQL Server 2005中执行此操作的最佳方法是什么?

我将假设逻辑将放在一些触发器中.

在不对所有字段进行硬编码的情况下,循环检查所有字段检查更改的好方法是什么?

正如您从我的问题中看到的那样,示例代码将非常受欢迎.

我注意到SQL Server 2008有一个名为Change Data Capture(CDC)的新功能.(这是CDC上一个不错的Channel9视频).这与我们正在寻找的类似,除了我们使用的是SQL Server 2005,已经就地存在日志表布局,并且还记录了进行更改的用户.当一个字段可能改变时,我也发现很难证明写出整个记录的前后图像是合理的.

我们当前的日志文件结构具有字段名称,旧数据,新数据的列.

提前谢谢,祝你有个愉快的一天.

2008年12月22日更新:我做了一些更多的研究,并在Live Search QnA上找到了这两个答案

    您可以创建一个触发器来执行此操作.请参阅 如何审核对sq l服务器数据的更改.

    您可以使用触发器将数据更改记录到日志表中.您还可以从www.lumigent.com购买Log Explorer 并使用它来读取事务日志以查看用户进行了更改.但是,数据库需要完全恢复此选项.

更新于2008年12月23日:我还想要一个简洁的方法来比较改变的内容,这看起来像是PIVOT的反面,我在SQL中发现它被称为UNPIVOT.我现在倾向于在INSERTED和DELETED表上使用UNPIVOT触发器.我很好奇,如果这已经完成,所以我正在搜索" unpivot deleted inserted ".

    发布使用后触发器的更新功能有一些不同的想法,但我仍然相信UNPIVOT将成为前进的路线.

小智.. 5

很晚但希望它对其他读者有用......

以下是我上周在类似主题上发布的答案的修改.

简短的回答是,没有适合所有人的"正确"解决方案.这取决于要求和被审计的系统.

触发器

优点:相对容易实现,审计内容具有很大的灵活性,以及​​如何通过完全控制来存储审计数据

缺点:当你有很多表甚至更多的触发器时,它会变得混乱.除非有一些第三方工具可以提供帮助,否则维护工作会很重.此外,根据数据库,它可能会对性能产生影响.

在SQL Server中创建审计触发器使用触发器将
更改更改为数据库表

CDC

优点:非常容易实现,本机支持

缺点:仅在企业版中可用,不是非常强大 - 如果您更改架构,您的数据将会丢失.我不建议将其用于长期审计跟踪

阅读交易日志

优点:您需要做的就是将数据库置于完全恢复模式,所有信息都将存储在事务日志中

缺点:您需要第三方日志阅读器才能有效地阅读此内容

在sql server 2008 SQL Server事务日志浏览器/分析器中读取日志文件(*.LDF)

第三方工具

我使用过ApexSQL的几个审计工具,但也有来自Idera(合规经理)和Krell软件(全方位审计)的好工具

ApexSQL Audit - 基于触发器的审计工具.生成并管理审计触发器

ApexSQL日志 - 允许通过读取事务日志进行审核



1> 小智..:

很晚但希望它对其他读者有用......

以下是我上周在类似主题上发布的答案的修改.

简短的回答是,没有适合所有人的"正确"解决方案.这取决于要求和被审计的系统.

触发器

优点:相对容易实现,审计内容具有很大的灵活性,以及​​如何通过完全控制来存储审计数据

缺点:当你有很多表甚至更多的触发器时,它会变得混乱.除非有一些第三方工具可以提供帮助,否则维护工作会很重.此外,根据数据库,它可能会对性能产生影响.

在SQL Server中创建审计触发器使用触发器将
更改更改为数据库表

CDC

优点:非常容易实现,本机支持

缺点:仅在企业版中可用,不是非常强大 - 如果您更改架构,您的数据将会丢失.我不建议将其用于长期审计跟踪

阅读交易日志

优点:您需要做的就是将数据库置于完全恢复模式,所有信息都将存储在事务日志中

缺点:您需要第三方日志阅读器才能有效地阅读此内容

在sql server 2008 SQL Server事务日志浏览器/分析器中读取日志文件(*.LDF)

第三方工具

我使用过ApexSQL的几个审计工具,但也有来自Idera(合规经理)和Krell软件(全方位审计)的好工具

ApexSQL Audit - 基于触发器的审计工具.生成并管理审计触发器

ApexSQL日志 - 允许通过读取事务日志进行审核

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有