设为首页 收藏本站
查看: 847|回复: 0

[经验分享] Sql server数据库记录修改追踪和恢复的解决方案

[复制链接]

尚未签到

发表于 2015-7-4 08:52:16 | 显示全部楼层 |阅读模式
在项目开发中,可能很多人都遇到这样客户要求:使用者操作数据库关键记录时要记录使用者的ID,时间,修改的内容等,在必要的情况下要回滚到某一时刻的记录内容。如何解决?这里我根据自己的工作经验总结了三种解决方案,如有不当或者更好的方案请赐教 : )。

      1.数据表冗余记录法
         在关键的数据库表中,加入 "创建时的日期时间"、"创建用户"、"修改或删除时的日期时间"、"修改或删除用户"、"记录状态" 等字段,当然了字段名可以简化,这里为了更好的说明。“记录状态”包括“当前可用”和“存档”两种状态。当用户修改记录时,要执行两步操作 1).更新当前数据库记录,记录修改者和时间,把“记录状态”改成“存档”。2)新建一条记录,把修改者和时间作为创建者和时间存入,保存新的记录内容,而“记录状态”为“当前可用”。 如果用户删除记录,只是执行第一步操作即可。
        这种方案可以用程序在前台方便的察看记录修改历史情况,并可以很容易的回滚到“某一时刻”,这里的回滚不是真正的回滚,仍然要在表里新建记录,和上面提到的修改记录操作相同,只不过记录的内容是“某一时刻”的内容而已。
      使用这种方法会造成数据库表中记录的过多存储,在查询和统计时性能会有影响。

   2.新建数据表记录操作
      在数据库中为关键数据表建立对应的“操作记录表”,所有对关键记录的修改、删除甚至读取都可以记录在“操作记录表”中,具体的实施可以在程序代码中控制,但更好的方法是可以使用触发器控制。
      这种方案也可以在前台方便的察看记录修改历史情况,并可以很容易的回滚到“某一时刻”。但由于为每一个关键数据表都建立了“操作记录表”也造成了Sql server的性能影响。
      另外有第三方提供了采用这种方案的辅助程序:OmniAudit
         下载http://www.ttdown.com/SoftView/SoftView_27817.html

3.使用Sql Server日志
      我们知道Sql Server数据库除了数据文件外,还有日志文件,日志文件记录数据库的变化情况,如果我们能察看日志文件的内容也就等于知道了数据库的操作历史,但是微软没有提供诸如察看sql日志的方法和接口等,好在有一个软件提供了这种功能:
  Lumigent Entegra For SQL Server ,下载页面http://www.ttdown.com/SoftView/SoftView_30135.html
它能跟踪数据库的所有改动情况,并且提供回滚功能,还可以导出操作历史等。
这种方案的好处是不为数据库增加任何负担就可以察看记录修改历史情况,并可以很容易的回滚到“某一时刻”。但是必须使用第三方的软件,而不能在自己程序的前台操作。另外Lumigent Entegra For SQL Server v2.3.1对中文支持不太好,有些郁闷。
      
期待更好的解决方案.....

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-82992-1-1.html 上篇帖子: 安装SQL Server 2005 Beta 的问题,你先必须删除FrameWork 2.0? 下篇帖子: 错误需要理由吗?(SQL Server 不存在或访问被拒绝)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表