使用MS SQL Server 2012中的触发器创建审计跟踪时的性能影响

时间:2014-06-26 07:11:10

标签: performance sql-server-2012 audit-trail

在SQL Server 2012数据库中,我们希望为Update和Delete操作创建几乎所有主要表的审计跟踪。我们通常在每个表上使用触发器创建Audit Trail并将其存储在shadow表中。那么性能影响?如果在任何表格上更新或删除了大量记录。还有其他方法可以实现审计跟踪吗?

1 个答案:

答案 0 :(得分:2)

通常,当我实现和审计数据库表的跟踪时,我通过代码实现它,而不是在触发器中实现它。在代码中实现时,您可以提供其他上下文信息,例如更改的原因,更改的原因,更改背后的原因等,这是一个非常常见的业务需求。在典型的多层应用程序设计中,我们为每个表都有DAO,实现更新的业务服务负责为核心表更新和历史记录条目插入调用单独的DAO。如果你想让一堆不同的资源直接对数据库进行表更新,这种方法并不好,但如果你有一个面向服务的体系结构,并且你的一组服务是进出的唯一方法,那么它是一种自然的方法。那些表格。

如果使用此方法实现审计跟踪,您当然需要确保将审计跟踪记录插入到与核心表的修改相同的事务中。

这是否比基于触发器的方法表现更好,我无法说。我的猜测是,如果你使用批量插入操作,它可能运行得更快,但在更常见的情况下,你可能会通过SQL一次更新/删除一条记录。不过,这是你可以探索的另一种选择。

相关问题