对于某些重要的数据表来说,如果经常出现可疑的数据变更行为,就应该引起管理员的注意。但若事先不捕获记录的话,是无法对其进行追踪查看的。使用捕获记录的方式对负载量大的系统是不适合的,而且管理员无法查看什么用户在什么时间修改了什么数据表等信息。使用SQL审核功能可以跟踪和记录系统上发生的事件,可以跟踪服务器级别和数据库级别的数据更改,其本身是一个数据库对象,可以通过T-SQL语句进行管理。SQL审核功能可以将记录写到到单独的文件或写入系统日志中,即通过审核数据库引擎实例中发生的事件将数据输出到日志文件中。可以通过文件,事件查看器,相关函数等方式,来读取审核的事件内容。
这里还以“Clientzl”数据库为例,需要对其中的内容变化进行审核。首先执行“USE master”,“CREATE SERVER AUDIT shenhe1 TO FILE (FILEPATH='D:SQLAudit')”语句,创建服务器级别的审核,并将审核的内容输出到指定的目录中。执行“USE Clientzl”,“CREATE DATABASE AUDIT SPECIFICATION Daspec2016 FOR SERVER AUDIT shenhe1 ADD(UPDATE,INSERT,DELETE ON scx.lianxrdz by dbo)”语句,创建针对数据库“Clientzl”的审核,并对其中的“Address”表的更新,插入,删除行为进行审核,其中的“scx”为架构名。
在Microsoft SQL S e r v e r M a n a g e m e n t Studios窗口左侧选择数据库实例名,在其下依次选择“安全性”、“审核”项,显示上述创建额审核项目,在其右键菜单上点击“启用审核”项启用该审核项目。注意,还需在“Clientzl”数据库中打开“安全性”、“数据库审核规则”项,在其下选择名为“Daspec2016”规范项目,在其右键菜单上点击“启用数据库审核规范”项才可以让审核发挥作用。之后可以对该数据表进行修改,例如执行“update scx.lianxrdz set dizhi='new dizhi'where lxrID=9”语 句,对该数据表中的的“dizhi”字段的内容进行更改。在“shenhe1”的审核项目右击“查看审核日志”项可以查看详细的日志信息,包括目标数据库主体名称,数据库名称,操作类型,记录的时间,架构名称等等。这样管理员可以非常清晰的看到数据表数据变动的详细信息。当然,也可以执行“SELECT * FROM fn_get_audit_file('d:sqlAudit*',default,de fault)”之类的语句,来查看审核的信息。