您的位置:首页 > 其它

"文件中的备份集是由BACKUP DATABASE...FILE=创建的,无法用于此还原操作"的解决办法

2009-04-03 08:57 351 查看
操作环境:SQL SERVER2000

昨天在帮别人还原数据库时,出现了如标题所示的错误提示,从网上搜了一下,使用邹建的办法恢复成功。

现将邹先生的回答整理了一下,期望遇到同样问题的朋友能尽快解决问题。

参考网址:http://topic.csdn.net/t/20040107/11/2641158.html

以下是还原步骤:

1. RESTORE filelistonly from disk='E:\qq'
注意其LogicName即可。

--按网上的写法还可以用以下两条语句查看一些其他信息,也可以不用

RESTORE headeronly from disk='E:\qq'
RESTORE LABELONLY from disk='E:\qq'

2. 将.mdf文件恢复出来

RESTORE DATABASE personnelDB FILE =N'personnelDB'
FROM Disk='E:\qq'
WITH MOVE 'personnelDB' TO 'c:\personnelDB_Data.mdf'

--注意:此步骤的personnelDB是数据库逻辑文件名,即在第一步中看到的LogicName

3. 此时,数据库会置疑,将它分离出来(我遇到的提示是:正在装载,而不是置疑)

4. 将恢复出的mdf文件备份一下

5. 停止SQL服务

6. 新建一个同名的数据库

7. 用上面备份的数据文件覆盖新建数据库的数据文件

8. 重新启动SQL服务

9. 在查询分析器中执行下面的语句:

USE MASTER
GO

--将当前服务器的全局配置设置'ALLOW UPDATES'的值设为1,即允许用户更新系统表
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO

--将系统表SYSDATABASES中personnelDB数据库的状态值改为32768(表示紧急情况模式)
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='personnelDB'
GO

--将数据库设为只允许一个用户访问
sp_dboption 'personnelDB', 'single user', 'true'
GO

--检查数据库
DBCC CHECKDB('personnelDB')
GO

--将数据库的状态改为28(丛书中没有说明28表示什么,大概是正常状态吧)
update sysdatabases set status =28 where name='personnelDB'
GO

--将服务器改回到不允许修改系统表状态
sp_configure 'allow updates', 0 reconfigure with override
GO

--将数据库改到多用户状态
sp_dboption 'personnelDB', 'single user', 'false'
GO
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐