当前位置: 代码迷 >> Sql Server >> 还原数据库遇到的有关问题
  详细解决方案

还原数据库遇到的有关问题

热度:62   发布时间:2016-04-27 20:56:41.0
还原数据库遇到的问题
还原数据库不   成功,提示:
试图扩大物理文件时,modify   file遇到操作系统错误112(磁盘空间不足)。未能创造一个或多个文件。请考虑用with   move选项来标识有效位置

------解决方案--------------------
看看是不是C盤空間太小了?
------解决方案--------------------
数据库所在盘符磁盘空间是否不足?
------解决方案--------------------
这里有个邹老大的代码例子:
--创建测试
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 后,重新启动该还原序列。
  相关解决方案