我正在使用SQL 2008并且有DELETE,UPDATE&在表XYZ上启用INSERT审计。除了查询数据之外,它的效果很好:
SELECT * FROM fn_get_audit_file('H:\SQLAudits\*', default, default)
它实际上并没有显示删除或插入或更新的内容,只是发生了删除等。上述查询的语句列显示了以下代码段:
delete [dbo].[XYZ] where ([Name] = @0)
我希望它能告诉我@ 0的价值是多少。有没有办法做到这一点?
答案 0 :(得分:0)
从我发现的内容来看,SQL Server 2008的“审计”功能非常缺乏。它不像传统的数据审计跟踪那样,每次发生变化时(通过触发器)都会存储一个新行,并提供完整的信息,例如进行更改的用户。它或多或少只是告诉你一些事情发生了变化而没有太多细节。我真的希望SQL Server包含完整的数据审计跟踪功能。
答案 1 :(得分:0)
<强> Reference 强>
在Creating Database Audit Specification
期间,您为Audit Action
类型INSERT
,UPDATE
,DELETE
这导致向我们显示日志,说Select or Insert or Update or Delete
......但是单个值永远不会被看到
Example - Click here to view the Logs for Insert/Update/Delete
答案 2 :(得分:0)
SQL Server审核工具非常强大,但它从未设计用于记录数据更改(例如,col1已从&#39; fred&#39;更改为&#39; santa& #39;在表格&#39;虚拟&#39;在db&#39;测试&#39;由sa&#39;)。
为此,您需要更改数据捕获(http://msdn.microsoft.com/en-us/library/bb522489.aspx)。
干杯, 标记
答案 3 :(得分:0)
您可以使用SQL Server Profiler监控删除句子。您将能够看到更改。 另一种监视方法是使用SQL Server中的CDC(更改数据捕获)功能。此功能可让您监控表格中的更改。
最后,还有其他相关工具,如ApexSQL Trigger。