北极冰点水 .NET 天空------天空是一个人永远也走不完的大路, 呼吸, 歌唱, 向着阳光

给予我们的誓言 以凝固不化的可能

导航

怎样让用户可以跟踪查询数据库数据变化

最近,半年前做完并已经上线的一个项目又要求加一个新功能,就是把系统中所有更新,增加和删除前后数据库数据的操作的前后数据记录下来,供管理员和用户在出现争议时可以提供帮助. 初次接到这个任务,首先想到的是建一个日志表, 利用触发器,在触发器里记录inserted和deleted 数据.后来试了下,这个办法虽然可行,但是inserted和deleted要提取数据必须要指明字段名字,而且触发器基于表而构建. 维护数据库中众多业务表的触发器,那简直是麻烦.
后来在网上搜了搜,有篇文章是原理也一样,不过他是动态为每个表做触发器,减少了维护成本,不过还是不理想.
我们都知道数据库可以从一个时间点上恢复,那么要恢复的话,它就必须知道这个时间点后做过什么操作,更改过哪些数据,这就是我们所说的事务日志,我直觉应该从事务日志入手.
在数据库管理器找了个事务日志文件,但不知用什么工具打开, 在网上看到dbcc log('数据库') ,可以在查询分析器里运行,但是结果是:可以看,但是看不懂,更不要说偶们高贵的用户了,难到真要自己写?迷惑了将近一个时辰,试图解析事务日志文件,但是没有日志文件的内核资料,一切还是over不了.
在搜寻中,发现了一个log explore,好像发现了一个新大陆一样,忐忑的找寻下载地址,安装,呵呵,一切都那么简单,用log explore 分析事务日志,简直是太好了,有filter功能,有数据变更轨迹,有事务id,呵呵,用户所要求的功能,用log explore 完全可以实现,而且查询方便, 鉴于我郁闷了差不多一天的经历希望可以减少大家碰到类似问题郁闷的时间.对了,有个 log explore 的下载地址: 不好意思忘了加收藏夹,搜搜应该有一堆. 至于怎么用,大家用用就知道了,很简单的,不过针对sql server的事务日志.oracle的俺没试过,如果不行的话,估计也有类似的工具吧.
只要不要费力自己写了. 对了数据库日志记录最好设置成完全,同时增加事务日志文件大小,注意定期备份后收缩数据库.log explore 可以查看离线的日志文件.

posted on 2005-12-27 16:30  北极冰点水  阅读(2294)  评论(1)    收藏  举报