我希望能够审核对db表(更新,插入等)执行的活动。设计这个最有效的方法是什么?我想到的一个解决方案是为每个表创建一个审计表,并使用SQL触发器在使用新值更新表之前插入先前的值。
答案 0 :(得分:0)
2008版的SQL Server包含了您正在寻找的内置选项。它命名为CDC或Change Data Capture。您可以在第一个链接中的BOL(官方Book-On-Line)或第二个链接中的博客中获取更多信息:
您还可以使用其他选项。但为了为您选择最佳选择,我们需要有关您系统的更多信息。如果(1)您可以描述您的系统架构,以及(2)您希望在审计中存储哪些信息(您是否需要用户名或只是自己审核数据),这将有所帮助,(3)您是否需要?保持历史记录或只获取事件,(4)这是临时需求或数据库结构的一部分(CDC将创建触发器等元素,不适合临时审计,为此您最好使用扩展事件或分析器)。如果符合您的需求,CDC是审计数据更改的非常好的选择。
答案 1 :(得分:0)
对于应用程序方面,如果您还处于设计阶段,我会查看ORM来帮助您。我会尽可能地查看并限制用户访问原始数据表。
仅供参考,根据您的情况,这可能会处于过高的水平,因为您可能希望密切关注某人使用任何工具在数据库中所做的每一项更改。
答案 2 :(得分:0)
SQL Server,从2008版开始,还包括SQL Server Audit。有一些数据库级审计操作使您能够审计表上的这些操作。 (请注意,数据库级审核仅适用于Enterprise和Developer版本。请参阅SQL Server Audit Support in Different Editions and Versions上的博客。)