日志备份和差异备份还原中的常见问题示例
代码

 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 

转载于:https://www.cnblogs.com/luomingui/archive/2010/03/04/1678271.html

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

  1. SQL Server系统视图/表/功能。 现实生活中的常见问题和解决方案

    介绍 (Introduction) In this new article, we will talk about the system views/tables/functions and how ...

  2. SQL Server 2008/2012 完整数据库备份+差异备份+事务日志备份 数据库备份

    文章目录 数据备份分类 根据备份目标分类 根据备份数据文件的范围进行分类 完整数据库备份 从是否复制所有的数据分类 差异备份 日志备份 事务日志备份 最常用的备份方法 选择备份策略和恢复模式 简单恢复 ...

  3. Database之SQLSever:SQLSever数据库管理(GUI法/SQL语句命令法两种方法实现备份(完整备份、差异备份、日志备份)、还原、删除、修改数据库等案例)之详细攻略

    Database之SQLSever:SQLSever数据库管理(GUI法/SQL语句命令法两种方法实现备份(完整备份.差异备份.日志备份).还原.删除.修改数据库等案例)之详细攻略 目录 数据库管理 ...

  4. SQL Server备份、完整备份,差异备份、日志备份

    全备份(Full Backup):就是对整个系统进行完全备份,包括系统和数据.这种备份方式的好处就是很直观,容易被人理解,当数据丢失时容易恢复.然而它也有不足之处:首先由于每天都对系统进行完全备份,因 ...

  5. SQL Server 2000中的完整备份、差异备份操作

    SQL Server 2000中的完整备份.差异备份操作 在SQL Server 2000中,假定我们拥有一个数据库为:Test, 现在需要它每天19:00自动进行一次备份,并且以后一旦发生数据库错误 ...

  6. Sql server 的完整备份和差异备份

    Sql server  的完整备份和差异备份 完整备份当然就是将数据库的数据全部备份 而差异备份指得是将上一次备份后到现在对数据的修改进行备份. 因此差异备份不能单独使用,只能先还原上一次的完整备份后 ...

  7. SQL Server数据库还原操作(附加备份操作)

    SQL Server数据库还原操作(附加备份操作) (前三步是新建数据库,已经有数据库的就不用看啦!!) 1.新建一个数据库 2.修改数据库名称,其他保持默认→确认 3.找到新建的数据库 还原操作开始 ...

  8. 使用SQL Server Management Studio 创建作业备份数据库

    在项目中,经常需要备份数据库,如果能做到只需点个按钮("开始备份数据库"按钮),然后什么都不管,数据库就自动备份好了,或者服务器上的数据库隔一段时间自动备份一次,那该多好啊. Sq ...

  9. MS SQL Server 2000 按日期自动备份

    MS SQL Server 2000 按日期自动备份 ms sql server 2000 1.管理-作业-步骤-命令 DECLARE @strPath NVARCHAR(200)  set @str ...

最新文章

  1. Spring 教程(三) 环境设置
  2. activemq无账户密码登录配置修改
  3. Java使用Future设置方法超时
  4. 【Pascal's Triangle II 】cpp
  5. Unity3d之Http通讯GET方法和POST方法
  6. ajax给表格填值,填报表用ajax实现关联单元格自动填充
  7. 通信原理之数字调制原理
  8. Word 中,字体无法调整的解决方法
  9. SV学习(8)——随机约束和分布、约束块控制
  10. Springboot的快速入门
  11. 自制力的本质是什么?怎样才能变得自律?
  12. 视频播放器源码(WinForm)
  13. 在线翻译html网页,HTML网页到维基页面翻译器
  14. C++——new和delete操作符
  15. 九点手眼标定的原理及方法,视觉引导必知必会。
  16. 太阳人人都恨布鲁斯 小斯愤怒:马刺是支肮脏球队
  17. 电子制动辅助系统的传感器解决方案
  18. udp端口不可达 icmp
  19. 实验 二叉树的基本操作
  20. Feathers组件--之--列表

热门文章

  1. 葡萄城报表介绍:交叉报表
  2. BC#65 T5 ZYB's Prime
  3. [实变函数]4.4 依测度收敛
  4. GridView 里的删除不起作用
  5. TreeView控件结合js树形选择 .
  6. MYSQL数据库命名及设计规范
  7. 在Visual Studio 2008中编译snort-2.8.6.1.tar.gz
  8. dbeaver连接mysql 驱动jar_Jmeter(七) 从入门到精通 建立数据库测试计划实战lt;MySQL数据库gt;(详解教程)...
  9. css面试基础知识,CSS知识点与面试题解析
  10. linux下的zz命令,linux中cut命令的用法