经常有人问,说发现商品资料表(SPKFK)和客户资料表(MCHK)里的资料被修改了,但是又查不出是谁修改的,修改前是什么内容。如何才能跟踪这些表的变化呢?
这里就需要在SQLERVER中建立相应的表和存储过程和触发器,来跟踪发生改变的数据,并把原数值和新数值都插入审计记录表中。
由于时空的表结构和LOG日志表结构的原因,只能跟踪几点几分,某个用户名进入哪些模块。但是不能知道在这些模块里做了些什么。因此,进入日志查询也查不到商品资料的变化记录。
这里就需要采用数据审计功能来完成上述要求。
数据审计可以展示某行数据自插入后所有的数据变化。
展示某个用户上周针对某表作的全部数据更改
展示某个工作站针对某表所做的全部数据更改
展示某个应用程序针对某表所做的全部数据更改
注意,也有人说可以用触发器将改变前的数据插入一个表不就完了么,但是这里如果单纯用触发器完成审计,则需要对表中所有的字段做出判断(用IF UPDATE()语句)如果表的字段少,还比较好办,但是如果象时空软件一样,资料表的字段都在100个以上,并且还有可能随时增加或减少,则需要不断的修改触发器,可操作性不强,如果不判断哪个字段的话,则需要将整行数据全部插入到一个表里,而不能只插入修改的字段。
这里,有2种工具可以参考。
一个工具是DYNAMICAUDIT.SQL这个脚本,里面包含了一个自定义函数,一个存储过程,一个AUDITLOG表和对应跟踪表的各个触发器。
还有另一个是共享软件OMNIAUDIT,这个需要在服务器端安装,并设置对相应的表。然后可以跟踪这些表的数值变化。这个请大家自己搜索下载。