sql2005运行在完整恢复模式下,
有一个今天凌晨1点的完整数据库备份1,早上9点误删除了一个表的数据。
这时紧急备份了事务日志
想通过备份1+备份的事务日志来恢复误删除的数据。没有其它的备份了
问题:
1、这种方式可行吗?主要是怀疑备份的事务日志是否记录了从凌晨1点到早上9点这段时间的所有数据库操作。
2、如果不可行,那我怎么才能保证备份的事务日志记录了从凌晨1点到早上9点这段时间的所有数据库操作。

解决方案 »

  1.   

    你需要先还原最新的完整备份,如果有基于最新的完整备份的差异备份,那么接下来再还原最新的差异备份,最后是回复日志文件到指定恢复点(也就是说到你误删除数据之前的某个时间点)楼主的问题其实不严重  首先你在发现数据误删之后及时做了尾部日志备份   这样就可以使用上面的恢复方式来实现数据的恢复。基本操作步骤:
    1,备份活动事务日志
    2,还原最新完整数据库备份
    3,如果存在差异备份,还原最新的差异备份
    4,从还原备份后创建的第一个事务日志备份开始,使用NORECOVERY一次还原日志
    5,恢复数据库到某个时间点(RESTORE DATABASE dbname WITH STOPAT='??????',RECOVERY)
      

  2.   


    肯定是能记录你的操作    只是我记得delete的话是没删除一行数据都会记录到日志文件   但是如果是truncate的话就是只记录truncate这个命令    这样会不会影响通过这种方式来恢复我就不确定了   我等下可以做个测试看看 
      

  3.   

    truncate也是要写进日志文件的,只不过写的比delete少些而已。在日志里不会只记录一条truncate命令。
      

  4.   


    truncate同构释放存储数据的数据页来删除数据    日志文件只记录释放页这个动作   我说的有点错误 
      

  5.   

    truncate也是可以使用日志恢复的。
      

  6.   

    首先楼主的措施是正确的,不出意外的话是可以恢复数据的
    如果你一定要看你的操作是否在某个备份中的话,你可以试试查看备份文件的LSN
      

  7.   

    你查询MSDB数据库的备份表就可以看到有没有其他备份了。
      

  8.   

    另外说一下,如果有其他日志备份你没有还原肯定是不能还原你最近的日志备份啦,因为LSN有问题。