• SQL Server:日志备份和差异备份还原中的常见问题示例


    日志备份和差异备份还原中的常见问题示例
    代码
     1 --创建测试
     2 CREATE DATABASE db
     3 GO
     4 
     5 --正常备份
     6 BACKUP DATABASE db TO DISK='c:\1.bak' WITH FORMAT
     7 BACKUP LOG db TO DISK='c:\2.bak' WITH FORMAT
     8 BACKUP LOG db TO DISK='c:\3.bak' WITH FORMAT
     9 BACKUP DATABASE db TO DISK='c:\4.bak' WITH FORMAT
    10 BACKUP DATABASE db TO DISK='c:\5.bak' WITH FORMAT,DIFFERENTIAL
    11 BACKUP LOG db TO DISK='c:\6.bak' WITH FORMAT
    12 GO
    13 
    14 --下面是用于日志备份和差异备份还原中易犯的错误
    15 
    16 --1. 恢复时使用错误的日志顺序
    17 IF DB_ID('db'IS NOT NULL DROP DATABASE db
    18 RESTORE DATABASE db FROM DISK='c:\1.bak' WITH NORECOVERY
    19 RESTORE LOG db FROM DISK='c:\3.bak'
    20 /*--收到信息
    21 服务器: 消息 4305,级别 16,状态 1,行 5
    22 此备份集中的日志开始于 LSN 6000000002800001,该 LSN 太晚,无法应用到数据库。包含 LSN 6000000002500001 的较早的日志备份可以还原。
    23 --*/
    24 GO
    25 
    26 --2. 恢复时,将日志备份应用于错误的完全备份
    27 IF DB_ID('db'IS NOT NULL DROP DATABASE db
    28 RESTORE DATABASE db FROM DISK='c:\4.bak' WITH NORECOVERY
    29 RESTORE LOG db FROM DISK='c:\2.bak'
    30 /*--收到错误信息
    31 服务器: 消息 4326,级别 16,状态 1,行 5
    32 此备份集中的日志终止于 LSN 6000000002800001,该 LSN 太早,无法应用到数据库。包含 LSN 6000000003000001 的较新的日志备份可以还原。
    33 --*/
    34 GO
    35 
    36 --3. 将日志备份用于RESTORE DATABASE
    37 IF DB_ID('db'IS NOT NULL DROP DATABASE db
    38 RESTORE DATABASE db FROM DISK='c:\2.bak' WITH NORECOVERY
    39 /*--收到错误信息
    40 服务器: 消息 3135,级别 16,状态 2,行 4
    41 文件 'c:\2.bak' 中的备份集是由 BACKUP LOG 创建的,无法用于此还原操作。
    42 --*/
    43 GO
    44 
    45 --4. 将差异备份用于RESTORE LOG
    46 IF DB_ID('db'IS NOT NULL IF DB_ID('db'IS NOT NULL DROP DATABASE db
    47 RESTORE DATABASE db FROM DISK='c:\4.bak' WITH NORECOVERY
    48 RESTORE LOG db FROM DISK='c:\5.bak'
    49 /*--收到错误信息
    50 服务器: 消息 3135,级别 16,状态 2,行 3
    51 文件 'c:\5.bak' 中的备份集是由 BACKUP DATABASE WITH DIFFERENTIAL 创建的,无法用于此还原操作。
    52 --*/
    53 GO
    54 
    55 --5. 将差异备份用于RESTORE LOG
    56 IF DB_ID('db'IS NOT NULL IF DB_ID('db'IS NOT NULL DROP DATABASE db
    57 RESTORE DATABASE db FROM DISK='c:\4.bak' WITH NORECOVERY
    58 RESTORE LOG db FROM DISK='c:\5.bak'
    59 /*--收到错误信息
    60 服务器: 消息 3135,级别 16,状态 2,行 3
    61 文件 'c:\5.bak' 中的备份集是由 BACKUP DATABASE WITH DIFFERENTIAL 创建的,无法用于此还原操作。
    62 --*/
    63 GO
    64 
    65 --6. 将差异备份用于错误的完全备份中
    66 IF DB_ID('db'IS NOT NULL IF DB_ID('db'IS NOT NULL DROP DATABASE db
    67 RESTORE DATABASE db FROM DISK='c:\1.bak' WITH NORECOVERY
    68 RESTORE DATABASE db FROM DISK='c:\5.bak'
    69 /*--收到错误信息
    70 服务器: 消息 3136,级别 16,状态 1,行 3
    71 无法将设备 'c:\5.bak' 上的备份应用于数据库 'db'。
    72 --*/
    73 GO
    74 
    75 --7. 直接使用日志备份或者差异备份还原
    76 IF DB_ID('db'IS NOT NULL IF DB_ID('db'IS NOT NULL DROP DATABASE db
    77 RESTORE DATABASE db FROM DISK='c:\5.bak'
    78 RESTORE LOG db FROM DISK='c:\2.bak'
    79 /*--收到错误信息
    80 服务器: 消息 913,级别 16,状态 8,行 3
    81 未能找到 ID 为 65535 的数据库。可能该数据库尚未激活,也可能正在转换过程中。
    82 --*/
    83 GO
    84 
    85 --8. 还原完全备份时,未使用NORECOVERY,导致不能正确还原日志备份或者差异备份
    86 IF DB_ID('db'IS NOT NULL IF DB_ID('db'IS NOT NULL DROP DATABASE db
    87 RESTORE DATABASE db FROM DISK='c:\1.bak'
    88 RESTORE LOG db FROM DISK='c:\2.bak'
    89 /*--收到错误信息
    90 服务器: 消息 4306,级别 16,状态 1,行 4
    91 先前的还原操作未指定 WITH NORECOVERY 或 WITH STANDBY。请在除最后步骤之外的所有其他步骤中指定 WITH NORECOVERY 或 WITH STANDBY 后,重新启动该还原序列。
    92 --*/
    93 GO
    94 
    95 --删除测试
    96 IF DB_ID('db'IS NOT NULL DROP DATABASE db
    97 
    98 

    作者:罗敏贵
    邮箱:minguiluo@163.com
    QQ群:34178394 建群 主要是寻找志同道合的人士一起学习和讨论自己的所学所思
    出处:http://luomingui.cnblogs.com/
    说明:专注于微软平台项目架构、熟悉设计模式、架构设计、敏捷个人和项目管理。现主要从事WinForm、ASP.NET、等方面的项目开发、架构、管理工作。文章为作者平时里的思考和练习,可能有不当之处,请博客园的园友们多提宝贵意见。
    知识共享许可协议本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。

  • 相关阅读:
    python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures
    python unittest单元测试框架-2discover
    python unittest单元测试框架-1
    python selenium-4自动化测试模型
    python selenium-9 grid模式
    20)PHP,数组的遍历
    19)PHP,数组知识
    18)PHP,可变函数,匿名函数 变量的作用域
    17)PHP,函数基础和参数问题
    16)PHP, set_include_path
  • 原文地址:https://www.cnblogs.com/luomingui/p/1678271.html
Copyright © 2020-2023  润新知