事情是这样的,我这里有一个正式在用的企业数据库,之前运行很多年都没有发生过这种问题,就是突然某一天,有一些表里的重要数据被删除了,这些数据都是涉及财务方面的,因为业务系统的BUG和不完善的地方,所以后台数据库是我们小组的成员都经常要操作的,这么多年都没事,也没有做类似安全管理之类的防护,现在出了这种事情,虽然可以通过还原备份数据库的方法来把删除的数据找回来,但找不出当初操作的SQL语句,因为不排除恶意操作的可能,用了Log Explorer,但也是一头雾水,现在就是想能找出当初误操作的SQL语句,最好还能定位到误操作的客户端机器,跪求各位大神指点!

解决方案 »

  1.   

    如果log explore搞不定的话,可以尝试我的方法:
    http://blog.csdn.net/dba_huangzj/article/details/8491327
      

  2.   

    我也常听人说审计功能,请问下这个审计是具体什么东东?是有专门的工具,还是SQL自带的功能?
      

  3.   

    sql server自带的,可以看联机丛书的说明
      

  4.   

    自带的就可以,第三方的要钱呵呵
    看看有关profiler,跟踪方面的资料吧
      

  5.   

    既然在用LOGEXPLORER了,為什么要一頭霧水??
      

  6.   

    使用LOGEXPLORER,当进行到点view log的地方时,弹出对话框提示:No log records found that match your selection! 什么都出不来
      

  7.   

    appex SQL也可以,前提是看你数据删除了多久,数据库有没日志备份,如果是SIMPLE的话,估计没救。
      

  8.   

    没有审计,如果数据很重要,就要用手工一条条恢复了。春节的时候刚遇到过,不过那是我不小心,没看清是在选中状态下执行了一个Update语句,结果Where被忽略了,整个表的数据都变成了同一个值,我的处理方法是:
    (1)马上备份日志文件和数据文件,拷贝到另一台机器,当前机器继续服务(最好做个自动填写缺省值的时间字段,这样方便合并)。
    (2)用Log Explore打开备份的数据,根据出错的大体时间定位,然后一条条找,找到有很多连续的、涉及那个出错的表的修改的地方,就是执行Update的地方了。
    (3)逐条查看修改记录,能看到Update的旧值和新值,把新值改回旧值就可以了。
    (4)把修改后的数据合并回原数据库。
    我从早上9:00做到第二天凌晨5:00,大功告成,就是眼睛有些受不了了。
      

  9.   

    其实我主要是想问,能不能追查到执行SQL的客户端IP,以及执行的错误的语句,用profiler我知道,但我不能总一天到晚开着profiler啊。有没别的办法能看到,我知道VM的recoverpoint能做到,但不用第三方的软件能不能实现呢?利用数据库自身机制的前提下?
      

  10.   

    如何导出SQL数据并进行备份?