解决方案 »

  1.   

    程序是完整备份,就是我得到的数据库文件是包含数据库及日志文件的,可以恢复到数据中.但是恢复后却发现数据不是最新的.是前几天的.我下了 SQL Log Analyzer查看.可以看到事务语句都在.我理解数据还在LOG里.但是怎么让LOG里的事务,执行起来?
      

  2.   

    我是说恢复状态,在窗口下半部分,比如有RECOVERY, NORECOVERY等的选项
    参考: 执行数据库完整还原(完整恢复模式)
      

  3.   

    建议把每天自动备份的SQL语句贴一下..
      

  4.   

    建议检查数据库备份文件的备份时间,查看方法如下,restore headeronly from disk='[数据库备份文件名]'--> 结果
    BackupStartDate 备份开始时间
    BackupFinishDate 备份完成时间
      

  5.   

    BACKUP DATABASE mydata DISK='d:\mydata01'
    备份语句是这样的.用SQL Log Analyzer可以查到LDF文件里,有很多日志.
    会不会因为死锁引起后面插入,删除,事务没有执行.而日志中却有.这种情况除了使用第三方软件从LOG中找数据,有没其它方法?用fn_dblog(null,null)函数只能查到一部分.第三方的就能查到所有.
      

  6.   


    如果你的语句是这么写的,那可能是因为 在同一个bak文件中,包含了多个备份,用上面版主的代码,看看:
    --1.第一次备份
    backup database xx to disk = 'c:\xxx.bak'
    --2.查看文件头,会返回很多字段,这里只取出2个字段
    restore headeronly from disk='c:\xxx.bak'
    /*
    BackupStartDate         BackupFinishDate
    2014-08-17 14:52:23.000 2014-08-17 14:52:23.000
    */
    --3.第二次备份
    backup database xx to disk = 'c:\xxx.bak'
    --4.会有2条记录,分别表示2次备份
    restore headeronly from disk='c:\xxx.bak'
    /*
    BackupStartDate         BackupFinishDate
    2014-08-17 14:52:23.000 2014-08-17 14:52:23.000
    2014-08-17 14:53:08.000 2014-08-17 14:53:08.000
    */
      

  7.   

     BackupStartDate                  BackupFinishDate     
    -----------------------                   -----------------------
    2014-08-14 00:00:20.000     2014-08-14 00:00:20.000只有一行记录.谢谢大家!最后从LDF读取事务数据,将数据找回.只是不明白一个问题.如果有死锁的情况下.数据库在执行备份时数据库会怎么处理?通过这次的事情,应该是数据没有写入MDF,但LDF里有记录.不知道这样理解对不对?如何找出所有连接中,哪个死锁?
      

  8.   

    以前收集的一个查询死锁进程的语句,看看是不是你需要的SELECT '死锁的进程'
        , spid
        , kpid
        , a.blocked
        , dbid
        , uid
        , loginame
        , cpu
        , login_time
        , open_tran
        , status
        , hostname
        , program_name
        , hostprocess
        , nt_domain
        , net_address
        , s1 = a.spid
        , s2 = 0
    FROM master..sysprocesses a
        JOIN (SELECT blocked
              FROM master..sysprocesses
              GROUP BY blocked) b ON a.spid = b.blocked
    WHERE a.blocked = 0
    UNION ALL
    SELECT '_牺牲品_'
        , spid
        , kpid
        , blocked
        , dbid
        , uid
        , loginame
        , cpu
        , login_time
        , open_tran
        , status
        , hostname
        , program_name
        , hostprocess
        , nt_domain
        , net_address
        , s1 = blocked
        , s2 = 1
    FROM master..sysprocesses a
    WHERE blocked = 0