0

我在我的 SQL Server 表中创建了以下列:

Log_id
Old_value
New_value
Module [The module for the transaction]
Reference_id [unique id of the record from respective tbl to associate with transaction history]
Transaction [The type of transaction. Can include, INSERT, UPDATE or DELETE]
Transaction_status [Indicates SUCCESS or FAILURE]
Stack_trace [The detailed stack trace of the error]
Modified_on
Modified_by

每当发生插入、更新或删除时,将相关数据插入上述审计表的最佳可能和最有效的方法是什么。

请指教。谢谢。

4

2 回答 2

0

最好的效率取决于很多事情:数据库负载(多少更新,有多大),您将如何处理数据等。

但一种方法是使用触发器: 关于使用触发器 和 MSDN 文档添加审计跟踪的博客

于 2012-05-30T10:19:18.673 回答
0

触发器可能有 Modifed_by 的问题。这是 ASP.NET,因此很可能是与 SQL 的单个连接,并且只有 ASP 知道 Modified_by。

如果日志的所有信息都已经在 SQL 中,则触发。

如果日志需要 SQL 中不存在的信息,那么最佳和高效是不一样的。

通过存储过程的两个独立语句将是最有效的。

但是为了数据完整性,将两个语句包装在一个事务中,以便它们作为一个单元成功或失败。开销很小。再次在存储过程中。或者在后面的代码中你可以使用 TSQL 和事务,但存储过程会更快更安全。

还要查看日志中的索引。更少的索引是更快的插入。日志是您可能希望优化插入速度而不是选择速度的地方。

于 2012-05-30T12:41:16.233 回答