/*--备份/恢复测试 SQL恢复时。提示媒体有2个家族成员。现在只提供了1个。数据备份不能恢复--*/
--下面是对这个问题的测试--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'。
--*/
--下面是对这个问题的测试--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'。
--*/
出现这种情况,说明你备份的时候指定了两个备份文件
这样,sql在做备份的时候,把数据库的内容分拆写到这两个备份文件中
所以恢复的时候也必须指定这两个备份文件才能恢复
因为一个备份文件中包含数据库中的一部分内容
if exists (select * from master..sysdatabases where name='test')
Drop Database test
goCreate Database test
gobackup Database test to disk='c:\test1.bak',disk='c:\test2.bak'
goDrop Database test
goRestore Database test from disk='c:\test1.bak',disk='c:\test2.bak'
goselect * from master..sysdatabases where name='test'提示信息:
正在删除数据库文件 'd:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF'。
正在删除数据库文件 'd:\Program Files\Microsoft SQL Server\MSSQL\data\test_Data.MDF'。
CREATE DATABASE 进程正在磁盘 'test' 上分配 0.75 MB 的空间。
CREATE DATABASE 进程正在磁盘 'test_log' 上分配 0.49 MB 的空间。
已处理 96 页,这些页属于数据库 'test' 的文件 'test'(位于文件 2 上)。
已处理 1 页,这些页属于数据库 'test' 的文件 'test_log'(位于文件 2 上)。
BACKUP DATABASE 操作成功地处理了 97 页,花费了 0.307 秒(2.568 MB/秒)。
正在删除数据库文件 'd:\Program Files\Microsoft SQL Server\MSSQL\data\test_log.LDF'。
正在删除数据库文件 'd:\Program Files\Microsoft SQL Server\MSSQL\data\test.mdf'。
已处理 104 页,这些页属于数据库 'test' 的文件 'test_Data'(位于文件 1 上)。
已处理 1 页,这些页属于数据库 'test' 的文件 'test_Log'(位于文件 1 上)。
RESTORE DATABASE 操作成功地处理了 105 页,花费了 0.094 秒(9.085 MB/秒)。(所影响的行数为 1 行)
希望能对你有用:)