我有一个 .net 应用程序,它主要使用 EF 以及 SQL Server 2008,但有几个客户使用 2005。数据库中有几百个表。我需要审核这些表的选择以记录所有数据插入/更新/删除。我正在考虑拥有这些表的副本以记录所有更改以及日期时间和用户名,然后在实际表上设置触发器以将数据更改插入相关审计表。这是解决这个问题的最好方法吗?触发器是最好的方法还是我应该使用 EF?我本来想只拥有一张审计表,但我认为它很快就会失控。
问问题
2952 次
3 回答
2
审核 SQL Server 并非易事,尤其是当您需要支持旧版本的 SQL Server 时。
使用您的 DbContext 跟踪更改。这将增加您的应用程序的开销,并且(正如您已经指出的)将很容易成为一场噩梦(键值无法扩展,需要调整历史表的结构更改(例如,您如何反映删除的列) )
CDC - 如果您的 SQL 服务器支持 CDC,这是一个不错的选择,并且对您的应用程序的影响较小
第三方选项,例如Audit SQL Server您需要调查他们是否满足您的需求
编辑: CDC 在 SQL 2005 中不可用
于 2013-04-15T07:53:25.597 回答
1
还要检查这个:http ://doddleaudit.codeplex.com/
我们正在使用它来审计我们产品中的数据库更改。您也可以轻松修改它以满足您的需求。
于 2013-04-15T18:14:20.227 回答
0
从 SQL Server 2008 开始,您可以执行一些内置功能,我认为,您想要什么。
于 2013-04-15T07:52:09.130 回答