用于还原、恢复和管理备份的 RESTORE 语句 from msdn
语句 说明
RESTORE (Transact-SQL)
说明 RESTORE DATABASE 和 RESTORE LOG Transact-SQL 语句,这些语句用于从使用 BACKUP 命令创建的备份还原和恢复数据库。RESTORE DATABASE 可用于任何恢复模式下的数据库。RESTORE LOG 仅用于完全恢复模式和大容量日志记录恢复模式。RESTORE DATABASE 也可用于将数据库恢复为数据库快照。
RESTORE 参数 (Transact-SQL)
介绍 RESTORE 语句和关联辅助语句集的“Syntax”部分说明的参数:RESTORE FILELISTONLY、RESTORE HEADERONLY、RESTORE LABELONLY、RESTORE REWINDONLY 和 RESTORE VERIFYONLY。大多数参数都仅由这六个语句中的一部分支持。每个参数的说明中都指示了相应的支持信息。
RESTORE FILELISTONLY (Transact-SQL)
说明 RESTORE FILELISTONLY Transact-SQL 语句,该语句用于返回一个结果集,其中包括备份集中包含的一组数据库和日志文件。
RESTORE HEADERONLY (Transact-SQL)
说明 RESTORE HEADERONLY Transact-SQL 语句,该语句用于返回一个结果集,其中包含特定备份设备上所有备份集的所有备份标头信息。
RESTORE LABELONLY (Transact-SQL)
说明 RESTORE LABELONLY Transact-SQL 语句,该语句用于返回一个结果集,其中包含有关给定备份设备标识的备份媒体的信息。
RESTORE REWINDONLY (Transact-SQL)
说明 RESTORE REWINDONLY Transact-SQL 语句,该语句用于倒带和关闭由 NOREWIND 选项执行 BACKUP 或 RESTORE 语句而使其保持打开的磁盘设备。
RESTORE VERIFYONLY (Transact-SQL)
说明 RESTORE VERIFYONLY Transact-SQL 语句,该语句用于验证但不还原备份,并检查备份集是否已完成以及整个备份是否可读;不会尝试验证数据的结构。

多家族媒体集
添加多个备份文件将数据库备份分布到多个文件中,这多个文件的整体称为一个“多家族媒体集”。一旦形成一个多家族媒体集,就必须一直作为一个整体来使用,不允许对其中某个文件进行操作,也不允许其他文件加入到这个多家族媒体集中来。
在还原的时候如果只提供一个文件,将会出现:系统上有两个家族成员,系统现在只有一个 等提示
原因:
在备份的时候将数据库备份到2个物理文件,而你还原的时候只提供一个文件,因此会出现如此提示。
一、可以通过
restore labelonly from disk='备份件文的物理路径'
查看该备份的信息,以下是返回的片段:
------------------------------------------------------------------------
MediaSetId FamilyCount FamilySequenceNumber
{C39F6B6E-9C18-4CA2-8E8A-AC6DDAC462F2} 2 1
-----------------------------------------------------------------------
FamilyCount表示家族成员的数量,可以看出,上例家族成员数量为2,而该备份文件的FamilySequenceNumber(顺序)为1
二、获取其他家族成员的信息:
use msdb
go
select physical_device_name from backupmediafamily where media_set_id =(select media_set_id from backupmediafamily where physical_device_name='备份件文的物理路径')
通过以上语句可以获取该备份家族所有成员的信息,以下是返回结果的例子
-----------------------------
physical_device_name
F:\backup\test_a.bak
F:\backup\test_b.bak
---------------------------
--下面是对这个问题的测试
--1.创建测试的数据库
create database test
go
--2.备份数据库
backup database test to disk='c:\a1.bak',disk='c:\a2.bak' with init
go
--3.删除测试的数据库
drop database test
go
--4.恢复数据库(第一次,只提供一个备份文件)
restore database test from disk='c:\a1.bak'
go
--5.查询是否恢复了
select * from master..sysdatabases where name='test'
go
--上面的恢复会出错,也看不到恢复的数据库.
--6.下面是正确的恢复方法
restore database test from disk='c:\a1.bak',disk='c:\a2.bak'
go
--7.查询是否恢复了
select * from master..sysdatabases where name='test'
go
--8.删除测试数据库
drop database test
/*--下面是测试结果
--1.创建数据库的提示信息:
CREATE DATABASE 进程正在磁盘 'test' 上分配 0.88 MB 的空间。
CREATE DATABASE 进程正在磁盘 'test_log' 上分配 0.49 MB 的空间。
已处理 112 页,这些页属于数据库 'test' 的文件 'test'(位于文件 1 上)。
已处理 1 页,这些页属于数据库 'test' 的文件 'test_log'(位于文件 1 上)。
--2.备份数据库的提示信息
BACKUP DATABASE 操作成功地处理了 113 页,花费了 0.180 秒(5.108 MB/秒)。
--3.删除数据库的提示信息
正在删除数据库文件 'd:\Program Files\Microsoft SQL Server\MSSQL\data\test_log.LDF'。
正在删除数据库文件 'd:\Program Files\Microsoft SQL Server\MSSQL\data\test.mdf'。
--4.不正确恢复的提示信息
服务器: 消息 3132,级别 16,状态 1,行 3
数据库 'test' 的媒体集有 2 个家族成员,但只提供了 1 个。必须提供所有的成员。
服务器: 消息 3013,级别 16,状态 1,行 3
RESTORE DATABASE 操作异常终止。
--5.查询是否恢复了的结果
name dbid sid mode status status2 crdate reserved category cmptlevel filename version
-------------------------------------------------------------------------------------------------------------------------------- ------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------ ----------- ----------- ------------------------------------------------------ ------------------------------------------------------ ----------- --------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------
(所影响的行数为 0 行)
--6.正确恢复的提示信息
已处理 112 页,这些页属于数据库 'test' 的文件 'test'(位于文件 1 上)。
已处理 1 页,这些页属于数据库 'test' 的文件 'test_log'(位于文件 1 上)。
RESTORE DATABASE 操作成功地处理了 113 页,花费了 0.186 秒(4.943 MB/秒)。
--7.查询是否恢复了的结果
name dbid sid mode status status2 crdate reserved category cmptlevel filename version
-------------------------------------------------------------------------------------------------------------------------------- ------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------ ----------- ----------- ------------------------------------------------------ ------------------------------------------------------ ----------- --------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------
test 11 0x01050000000000051500000007E53B2B54190E2943170A32F4010000 0 16 1090519040 2003-12-31 16:35:03.673 1900-01-01 00:00:00.000 0 80 d:\Program Files\Microsoft SQL Server\MSSQL\data\test.mdf 539
(所影响的行数为 1 行)
--8.删除数据库的提示信息
正在删除数据库文件 'd:\Program Files\Microsoft SQL Server\MSSQL\data\test_log.LDF'。
正在删除数据库文件 'd:\Program Files\Microsoft SQL Server\MSSQL\data\test.mdf'。
--*/
posted on 2008-01-10 09:06 Above The Sky 阅读(1561) 评论(2) 收藏 举报
浙公网安备 33010602011771号