更好的方法来维护数据库中表的审计

时间:2013-10-30 09:21:17

标签: c# sql-server-2008 audit

我们有一个使用变更数据捕获(CDC)功能的生产数据库来维护少数几个表的审计数据。但由于性能影响以及需要对数据库结构进行更改(如添加因CDC而无法执行的索引),我们现在要禁用CDC。

要求是从Web应用程序中捕获单个审计表中的一组表的所有“插入”,“删除”和“更新”操作。 让我们举例说明,我必须通过Web应用程序[在C#中]为TableA中的TableA维护每个AddA,Update和Remove的TableA的审计信息。

我正在更新每个存储过程,这可能会导致集合中每个表的这3个操作中的任何一个。但是由于我有大量的表格,所以它太容易出错并且采用时间方法。

请提供一种更好的方法,在时间和性能方面都可以提高效率。

1 个答案:

答案 0 :(得分:0)

快速回答:只需确保记录所有会改变DATABASE的操作!

在我们的项目中,我们创建了一个单独的表,其中包含以下字段

   Date_And_Time     Actions     UserID     Part_of_Program

每当用户执行插入,更新或删除命令,或登录或退出系统,或者系统在我们的数据库中运行自动操作时,程序会自动在此处插入一条记录,告诉我们采取了哪些操作,是谁做的,以及该计划的哪个部分受到了影响。

..或 你可以编写代码来不断检查表的当前大小。如果大小更改,则将其记录在审计表中。 如果大小增加,则插入数据。否则数据被删除。