• 日志备份和差异备份还原中的常见问题示例(转自&邹建)


    --创建测试
    CREATE DATABASE db
    GO
      
    --正常备份
    BACKUP DATABASE db TO DISK='c:1.bak' WITH FORMAT
    BACKUP LOG db TO DISK='c:2.bak' WITH FORMAT
    BACKUP LOG db TO DISK='c:3.bak' WITH FORMAT
    BACKUP DATABASE db TO DISK='c:4.bak' WITH FORMAT
    BACKUP DATABASE db TO DISK='c:5.bak' WITH FORMAT,DIFFERENTIAL
    BACKUP LOG db TO DISK='c:6.bak' WITH FORMAT
    GO
      
    --下面是用于日志备份和差异备份还原中易犯的错误
      
    --1. 恢复时使用错误的日志顺序
    IF DB_ID('db'IS NOT NULL DROP DATABASE db
    RESTORE DATABASE db FROM DISK='c:1.bak' WITH NORECOVERY
    RESTORE LOG db FROM DISK='c:3.bak'
    /*--收到信息
    服务器: 消息 4305,级别 16,状态 1,行 5
    此备份集中的日志开始于 LSN 6000000002800001,该 LSN 太晚,无法应用到数据库。包含 LSN 6000000002500001 的较早的日志备份可以还原。
    --*/
    GO
      
    --2. 恢复时,将日志备份应用于错误的完全备份
    IF DB_ID('db'IS NOT NULL DROP DATABASE db
    RESTORE DATABASE db FROM DISK='c:4.bak' WITH NORECOVERY
    RESTORE LOG db FROM DISK='c:2.bak'
    /*--收到错误信息
    服务器: 消息 4326,级别 16,状态 1,行 5
    此备份集中的日志终止于 LSN 6000000002800001,该 LSN 太早,无法应用到数据库。包含 LSN 6000000003000001 的较新的日志备份可以还原。
    --*/
    GO
      
    --3. 将日志备份用于RESTORE DATABASE
    IF DB_ID('db'IS NOT NULL DROP DATABASE db
    RESTORE DATABASE db FROM DISK='c:2.bak' WITH NORECOVERY
    /*--收到错误信息
    服务器: 消息 3135,级别 16,状态 2,行 4
    文件 'c:2.bak' 中的备份集是由 BACKUP LOG 创建的,无法用于此还原操作。
    --*/
    GO
      
    --4. 将差异备份用于RESTORE LOG
    IF DB_ID('db'IS NOT NULL IF DB_ID('db'IS NOT NULL DROP DATABASE db
    RESTORE DATABASE db FROM DISK='c:4.bak' WITH NORECOVERY
    RESTORE LOG db FROM DISK='c:5.bak'
    /*--收到错误信息
    服务器: 消息 3135,级别 16,状态 2,行 3
    文件 'c:5.bak' 中的备份集是由 BACKUP DATABASE WITH DIFFERENTIAL 创建的,无法用于此还原操作。
    --*/
    GO
      
    --5. 将差异备份用于RESTORE LOG
    IF DB_ID('db'IS NOT NULL IF DB_ID('db'IS NOT NULL DROP DATABASE db
    RESTORE DATABASE db FROM DISK='c:4.bak' WITH NORECOVERY
    RESTORE LOG db FROM DISK='c:5.bak'
    /*--收到错误信息
    服务器: 消息 3135,级别 16,状态 2,行 3
    文件 'c:5.bak' 中的备份集是由 BACKUP DATABASE WITH DIFFERENTIAL 创建的,无法用于此还原操作。
    --*/
    GO
      
    --6. 将差异备份用于错误的完全备份中
    IF DB_ID('db'IS NOT NULL IF DB_ID('db'IS NOT NULL DROP DATABASE db
    RESTORE DATABASE db FROM DISK='c:1.bak' WITH NORECOVERY
    RESTORE DATABASE db FROM DISK='c:5.bak'
    /*--收到错误信息
    服务器: 消息 3136,级别 16,状态 1,行 3
    无法将设备 'c:5.bak' 上的备份应用于数据库 'db'
    --*/
    GO
      
    --7. 直接使用日志备份或者差异备份还原
    IF DB_ID('db'IS NOT NULL IF DB_ID('db'IS NOT NULL DROP DATABASE db
    RESTORE DATABASE db FROM DISK='c:5.bak'
    RESTORE LOG db FROM DISK='c:2.bak'
    /*--收到错误信息
    服务器: 消息 913,级别 16,状态 8,行 3
    未能找到 ID 为 65535 的数据库。可能该数据库尚未激活,也可能正在转换过程中。
    --*/
    GO
      
    --8. 还原完全备份时,未使用NORECOVERY,导致不能正确还原日志备份或者差异备份
    IF DB_ID('db'IS NOT NULL IF DB_ID('db'IS NOT NULL DROP DATABASE db
    RESTORE DATABASE db FROM DISK='c:1.bak'
    RESTORE LOG db FROM DISK='c:2.bak'
    /*--收到错误信息
    服务器: 消息 4306,级别 16,状态 1,行 4
    先前的还原操作未指定 WITH NORECOVERY 或 WITH STANDBY。请在除最后步骤之外的所有其他步骤中指定 WITH NORECOVERY 或 WITH STANDBY 后,重新启动该还原序列。
    --*/
    GO
      
    --删除测试
    IF DB_ID('db'IS NOT NULL DROP DATABASE db
  • 相关阅读:
    轻松Ajax.net实例教程12_TabContainer和TabPanel(按AjaxControlToolkit字母排序)
    轻松Ajax.net实例教程9_HoverMenuExtender(按AjaxControlToolkit字母排序)
    轻松Ajax.net实例教程11_PopupControlExtender(按AjaxControlToolkit字母排序)
    轻松Ajax.net实例教程7_DropDownExtender(按AjaxControlToolkit字母排序)
    轻松Ajax.net实例教程4_CalendarExtender(按AjaxControlToolkit字母排序)
    轻松Ajax.net实例教程3_AutoCompleteExtender(按AjaxControlToolkit字母排序)
    轻松Ajax.net实例教程8_DynamicPopulateExtender(按AjaxControlToolkit字母排序)
    轻松Ajax.net实例教程5_CascadingDropDown(按AjaxControlToolkit字母排序)
    [SHOI2014]概率充电器
    [HAOI2012]高速公路
  • 原文地址:https://www.cnblogs.com/fromzerotohero/p/3804516.html
Copyright © 2020-2023  润新知