数据文件备份还原问题问题

我按书上操作步骤如下测试数据文件的备份还原:

--创建包含多个文件组的数据库
create database db
on primary(
name=N'db_data',
filename=N'c:\db_data.mfd'
),
filegroup db_fg1(
name=N'db_fg1_data',
filename=N'c:\db_fg1_data.ndf'
),
filegroup db_fg2(
name=N'db_fg2_data',
filename=N'c:\db_fg2_data.ndf'
)
Log on(
name=N'db_log',
filename=N'c:\db.ldf'
)
go

--在不同的文件组db_fg1上创建表
create table db.dbo.tb_primary(
id int
)on [primary]
create table db.dbo.tb_fg1(
id int
) on db_fg1
create table db.dbo.tb_fg2(
id int
)on db_fg2
go

--备份文件组db_fg1(文件组还原必须同时还原primary文件,故需同时备份)
alter database db set recovery full--or bulk_logged
go--这是我自己加的,如果没改revovery模式,将会提示simple模式下,备份失败

backup database db 
filegroup=N'primary',
filegroup=N'db_fg1'
to disk=N'c:\db_fg1.bak'
with format--重写
go


--测试删除数据库
drop database db
go

--从文件组备份中恢复数据库
restore database db
filegroup=N'primary',
filegroup=N'db_fg1'
from disk=N'c:\db_fg1.bak'

---------到这里都正常
--检查
select count(*) from db.dbo.tb_fg1
go

---------问题在最后,查询时时提示:
服务器: 消息 927,级别 14,状态 2,行 1
无法打开数据库 'db'。该数据库正处于还原操作中途。

查看企业管理器时数据库为灰色,(正在装载)

还原改为:
restore database db
filegroup=N'primary',
filegroup=N'db_fg1'
from disk=N'c:\db_fg1.bak'
with recovery
提示:
服务器: 消息 3032,级别 16,状态 2,行 1
一个或多个选项(recovery)不支持该语句。请查阅文档以了解所支持的选项。

重启服务,刷新也不行,请问各位是哪里问题,有没有遇到过类似的问题。

作者: zxl2235   发布时间: 2011-06-15

SQL code
--测试删除数据库
drop database db
go

--从文件组备份中恢复数据库
restore database db
filegroup=N'primary',
filegroup=N'db_fg1'
from disk=N'c:\db_fg1.bak'

---------到这里都正常
go  ----这是还差个 go
--检查
select count(*) from db.dbo.tb_fg1
go


作者: qianjin036a   发布时间: 2011-06-15

居然还写错了字!
SQL code
---------到这里都正常
go  ----这里还差个 go
--检查

作者: qianjin036a   发布时间: 2011-06-15

就ls的

作者: mingpei0703   发布时间: 2011-06-15

sql server版本是什么?

作者: misterliwei   发布时间: 2011-06-15

引用 2 楼 qianjin036a 的回复:
居然还写错了字!

SQL code

---------到这里都正常
go ----这里还差个 go
--检查


加了个go还是不行,sqlserver2000的

作者: zxl2235   发布时间: 2011-06-15

SQL code

restore database db
filegroup=N'primary',
filegroup=N'db_fg1'
from disk=N'c:\db_fg1.bak'
with partial  --加上它2000下,2005可加可不加

作者: misterliwei   发布时间: 2011-06-15

楼主这个案例,执行以下SQL会报错的喔.
select count(*) from db.dbo.tb_fg2

作者: ap0405140   发布时间: 2011-06-15

引用 7 楼 ap0405140 的回复:

楼主这个案例,执行以下SQL会报错的喔.
select count(*) from db.dbo.tb_fg2

他就是要这个效果。

作者: misterliwei   发布时间: 2011-06-15

引用 6 楼 misterliwei 的回复:
SQL code


restore database db
filegroup=N'primary',
filegroup=N'db_fg1'
from disk=N'c:\db_fg1.bak'
with partial --加上它2000下,2005可加可不加


报错:
--
服务器: 消息 3135,级别 16,状态 2,行 1
文件 'c:\db_fg1.bak' 中的备份集是由 BACKUP DATABASE...FILE=<name> 创建的,无法用于此还原操作。
服务器: 消息 3013,级别 16,状态 1,行 1
RESTORE DATABASE 操作异常终止。

作者: zxl2235   发布时间: 2011-06-15