• SQL SERVER差异备份还原


    本文测试恢复单独的差异备份文件。报错:无法还原日志备份或差异备份,因为没有文件可用于前滚。

    SSMS恢复完整备份文件没有问题,但差异备份恢复始终报错。以下是微软帮助文档中示例:

    --微软帮助文档
    RESTORE DATABASE AdventureWorks2008R2
       FROM DISK = 'Z:SQLServerBackupsAdventureWorks2008R2.bak'
       WITH FILE = 6
          NORECOVERY;
    RESTORE DATABASE AdventureWorks2008R2
       FROM DISK = 'Z:SQLServerBackupsAdventureWorks2008R2.bak'
       WITH FILE = 9
          RECOVERY;

    WITH FILE = 6 处会报错(后同,原因是备份集后缺少逗号分隔),这是针对同一文件中包含多个备份集情况。但说明了关键一点,即:

    /*
    
    第1步,还原完整备份,必须使用 WITH NORECOVERY ,不对数据库执行操作,不回滚事务,使数据库处于【正在还原...】状态,
    此时数据库不可使用,但可继续还原其它文件; 第2步,还原差异备份,使用 WITH RECOVERY,回滚未提交事务,使数据库恢复到可使用状态。
    */

    了解了这一点,即使使用SSMS进行差异备份还原操作,也可以正常还原。这说明:

    1,在不是还原当前数据库时,会出现以上状况。因为在恢复当前数据库时,会始终显示并选中最近完整备份,差异备份则可选。

    2,在不是还原当前数据库时,始终需要最近完整备份文件,并按照上面两步,才能还原到最新差异备份(在SSMS中还原当前差异备份时,SSMS帮我们两步合一步而已)。

    另附示例,使用其它数据库备份,恢复新数据库到指定文件位置:

    --使用 BACKUP 和 RESTORE 复制数据库
    BACKUP DATABASE AdventureWorks2008R2 
       TO AdventureWorks2008R2Backups ;
    
    RESTORE FILELISTONLY 
       FROM AdventureWorks2008R2Backups ;
    
    RESTORE DATABASE TestDB 
       FROM AdventureWorks2008R2Backups 
       WITH MOVE 'AdventureWorks2008R2_Data' TO 'C:MySQLServer	estdb.mdf',
       MOVE 'AdventureWorks2008R2_Log' TO 'C:MySQLServer	estdb.ldf';
  • 相关阅读:
    简单的mvc之一:简单的开始
    从子类化到工厂模式
    js漫谈
    asp.net mvc框架的一些切入点
    js框架漫谈
    基于公司云平台的即时聊天工具PTALK
    基于公司云平台的素材归档系统(一)
    搜索输入框下拉列表热词搜索的实现
    HTML5 localStorage 的使用
    MVC模式下xml文件的解析
  • 原文地址:https://www.cnblogs.com/hhlotus/p/13639305.html
Copyright © 2020-2023  润新知