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

--创建测试

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

日志备份和差异备份还原中的常见问题示例(转自&邹建),布布扣,bubuko.com

时间: 2024-08-09 02:09:03

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

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

在SQL Server 2000中,假定我们拥有一个数据库为:Test, 现在需要它每天19:00自动进行一次备份,并且以后一旦发生数据库错误,我们都可以通过备份文件将数据库恢复到任何一个备份过的时刻点. 备份步骤:1. 在“SQL Server企业管理器”中注册数据库所在的服务器,注意要使用sa用户名和口令,否则以后执行备份调度的时候,会出现权限不足,导致不能进行备份.2. 确保该服务器的SQL Server Agent服务是开启的,因为所有的调度都是通过该代理进行执行的.3. 在“SQL S

利用tar进行完全备份、增量备份、差异备份,并控制版本号,自动删除备份文件

因业务需求,需对一个目录进行定期备份,现在使用tar进行自动备份,计划每周一次完整备份,其他每天进行增量或者差异备份,所以写出下面的脚步通过指定参数来选择备份模式.备份文件只保留最近两个完整备份版本和附属的增量或差异备份版本. [[email protected] script]# ./backup.sh          Please select the backup or delete mode,[full|diff|incr|delete|help] [[email protected]

完全备份、差异备份以及增量备份的区别

数据备份的方式有完全备份.差异备份以及增量备份,那么这三种备份方式有什么区别,在具体应用中又该如何选择呢?本文就这些问题作以介绍. 一.备份方式简介 1.完全备份(Full Backup) 备份全部选中的文件夹,并不依赖文件的存档属性来确定备份那些文件.在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份.换言之,清除存档属性. 完全备份就是指对某一个时间点上的所有数据或应用进行的一个完全拷贝.实际应用中就是用一盘磁带对整个系统进行完全备份,包括其中的系统和所有数据.这种备份方式最大的

完全备份、差异备份和增量备份的权威解释!!!

根 据各种版本的解释,关于这三种备份方式这里有个经team实践后,认为比较标准的解释,说说哈.相关资料参考了Symantec Backup Exec (tm) for Windows Servers 11d revision,这里面对三个定义的解释比较准确,现在分享一下: 1.Full. Includes all of the data that was selected for backup and uses the full backup method 完全备份包括选择用于备份的所有数据,并

数据库之完全备份、差异备份以及增量备份

数据备份的方式有完全备份.差异备份以及增量备份,那么这三种备份方式有什么区别,在具体应用中又该如何选择呢?本文就这些问题作以介绍. 一.备份方式简介 1.完全备份(Full Backup) 备份全部选中的文件夹,并不依赖文件的存档属性来确定备份那些文件.在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份.换言之,清除存档属性. 完全备份就是指对某一个时间点上的所有数据或应用进行的一个完全拷贝.实际应用中就是用一盘磁带对整个系统进行完全备份,包括其中的系统和所有数据.这种备份方式最大的

完整备份数据库+差异备份,恢复到另外一台服务器

材料:完整备份数据库一份.最近备份的差异备份一份 现在需要将它完整的恢复到另外一台数据库服务器上. 首先 左侧数据库-右键-还原数据库 然后目标数据库手动输入一个名字. 下面源设备选择完整数据库文件,然后确定后会出现在 选择用于还原的备份集 那里,勾选中完整的那份.然后左侧选项 填写一下 mdf 文件路径等 最主要的是下面那个要选择中间那个选项,以便恢复完了以后还能继续恢复差异备份 点击确认后,数据开始恢复,恢复完了以后,刷新一下左侧的数据库列表,会发现刚刚那个输入的数据库名字,显示的是 正在还

sqlserver全备份,差异备份和日志备份

差异备份是以上一个全备为基点,这个期间所有差异数据的备份. 日志备份是基于前一个全备+日志备份为基点,这个期间的事务日志的备份.(日志备份用于确保还原数据库到某个时间点) 在利用全备+日志备份时,需要有序并逐个还原所有日志备份.假设要还原周六的数据,则需要上周日的全备和周一到周六的所有日志备份才可以.如果有每天的差异备份,则只需要周日的全备+周五的差异备份+周六的日志备份即可.这样还原起来方便快捷,节省时间成本. 数据正常备份计划 1) 每周星期日的2:00:00执行数据库的完整备份: 2) 每

SQL Server :完整备份,差异备份或事务日志备份,尾部日志备份

事故背景: 突然间数据库无缘无故损坏了,差异备份或事务日志备份在3点才会自动去做,那么如何将2点到2点40之间的数据恢复呢?这就需要通过备份尾部日志进行恢复了. 环境描述: 某公司装了一台SQL Server数据库,为了保证数据库能够在出现故障时及时的修复,管理员做了备份操作,比如说完整备份+差异备份或者完整备份+事务日志备份,而且备份的时间是每隔6个小时做一次完整备份,在每天的1点.6点.12点.18点,6个小时之内是每隔1个小时做一次差异备份事务日志备份,并且和计划任务结合在了一起. 假如现

差异备份和还原操作方法(转)

   差异备份只创建数据库中自上一次数据库备份之后修改过的所有页的复本.差异日志主要用于使用频繁的系统,一旦这类系统中的数据库发生故障,必须尽快使其重新联机.差异备份比完整数据库备份小,因此对正在运行的系统影响较小.            例如,某个站点在星期天晚上执行完整数据库备份.在白天每隔 4 小时制作一个事务日志备份集,并用当天的备份重写头一天的备份.每晚则进行差异备份.如果数据库的某个数据磁盘在星期四上午 9:12 出现故障,则该站点可以:        1.备份当前事务日志.