请问要如何才能把一个非分离出来的MDF文件再附加回数据库去?

cscentaur 2003-10-25 11:57:04
客户那边的数据库坏了,连备份和分离操作都不能作了。我当时直接就把数据库的MDF和LDF文件拷出来,现在想恢复回去却会错。

我运行这个代码:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO
CREATE DATABASE Archive
ON PRIMARY (FILENAME = 'D:\mssql7\data\CLEZlibrary.mdf')
FOR ATTACH
GO

出错为:

服务器: 消息 601,级别 12,状态 3,行 1
由于数据移动,未能继续以 NOLOCK 方式扫描。
服务器: 消息 1813,级别 16,状态 3,行 1
未能打开新数据库 'Archive'。CREATE DATABASE 将终止。
正在将数据库 'Archive' 由版本 524 转换为当前版本 539。
数据库 'Archive' 正在运行从版本 524 到版本 525 的升级步骤。

请问要如何解决?
...全文
208 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
cscentaur 2003-11-02
  • 打赏
  • 举报
回复
算了,看这个问题也不会有人回答了,结贴吧。
cscentaur 2003-10-28
  • 打赏
  • 举报
回复
我也想啊,但CSDN规定了我最大只能给100分。这要怎么办才好啊。
crazycyber 2003-10-27
  • 打赏
  • 举报
回复
又来?
看来和我的症状不一样。
兄弟这么难的题,下手要狠,放300分嘛~
高手的时间是粉宝贵的哦^^
LoveSQL 2003-10-27
  • 打赏
  • 举报
回复
还是数据库版本的问题
,你需要先统一版本,然后再恢复就好了。
cscentaur 2003-10-27
  • 打赏
  • 举报
回复
楼上,这不太可能,因为我的2000下它提示是版本过低,在7下它提示是版本高了,这叫我的怎么办呢。要打补丁吗?
goldocean 2003-10-27
  • 打赏
  • 举报
回复
可能是你的系统有问题了.
SwordsmanF 2003-10-27
  • 打赏
  • 举报
回复
在2000下,进入企业管理器。右击数据库(注意不用先建好你的数据库),选附加数据库,选中你的mdf文件。如果没有问题会自己找到同名的.ldf文件。确定。
将新附加好的数据中的用户删除,再重新指定。
teaism 2003-10-26
  • 打赏
  • 举报
回复
你在7.0下先挂上,然后导到2000,可能是版本升级的问题。
cscentaur 2003-10-26
  • 打赏
  • 举报
回复
也一样的会出一样的错误信息,本来在客户那边就已经不能作备份和分离了,但应用程序还是可以连的上去的。
pengdali 2003-10-26
  • 打赏
  • 举报
回复
你是2000下的文件到7.0下恢复?
数据库的版本对吗?
饮水需思源 2003-10-26
  • 打赏
  • 举报
回复
直接在SQL的企业管理器中选择“附加数据库”试试,有可能是数据库损坏了
cscentaur 2003-10-26
  • 打赏
  • 举报
回复
楼上的大哥们,这种方法我已经试过了好几次了,每次都是出现这种错误提示,然后数据库还是不能用,有没有其它的方法啊。
hjb111 2003-10-26
  • 打赏
  • 举报
回复
sp_attach_db @dbname='yourdatabasename',
@filename1='d:\...\你的.MDF文件路径',
@filename2='d:\...\你的.ldf文件路径'
cscentaur 2003-10-26
  • 打赏
  • 举报
回复
错误信息还是一样的为:

服务器: 消息 601,级别 12,状态 3,行 1
由于数据移动,未能继续以 NOLOCK 方式扫描。
服务器: 消息 1813,级别 16,状态 3,行 1
未能打开新数据库 'CLEZlibrary'。CREATE DATABASE 将终止。
正在将数据库 'CLEZlibrary' 由版本 524 转换为当前版本 539。
数据库 'CLEZlibrary' 正在运行从版本 524 到版本 525 的升级步骤。
cscentaur 2003-10-26
  • 打赏
  • 举报
回复
不过,数据库也提示说我的数据文件的头不对,不明白这是为什么。
cscentaur 2003-10-26
  • 打赏
  • 举报
回复
回楼上的话,您说的方法我已经试过了,还是不行,提示还是一样的

Server: Msg 943, Level 14, State 1, Line 1
Database 'clezlibrary' cannot be opened because its version (524) is later than the current server version (515).
newdongkui 2003-10-26
  • 打赏
  • 举报
回复
EXEC sp_attach_db @dbname = N'CLEZlibrary',
@filename1 = N'D:\mssql7\data\CLEZlibrary.mdf',
@filename2 = N'D:\mssql7\data\CLEZlibrary.ldf'
newdongkui 2003-10-26
  • 打赏
  • 举报
回复
EXEC sp_attach_db @dbname = N'CLEZlibrary',
@filename1 = NN'D:\mssql7\data\CLEZlibrary.mdf',
@filename2 = 'D:\mssql7\data\CLEZlibrary.ldf'

pengdali 2003-10-26
  • 打赏
  • 举报
回复
如果还不行:

新建一同名数据库(文件名,文件组都和原来的一样),然后停止数据库服务,用原来文件替换新建的数

据库文件,启动数据库,该数据库被设未suspect

然后把数据库改成紧急模式:
sp_configure 'allow', 1
reconfigure with override
update sysdatabases set status = 32768 where name = '数据库名'

把LDF文件改名,再执行
DBCC REBUILD_LOG ('数据库名', 'E:\fdzz\database\fdzz1204_Log.LDF' )

恢复数据库紧急模式
update sysdatabases set status = 0 where name = '数据库名'
执行
restore database 数据库名 WITH RECOVERY
sp_configure 'allow', 0
reconfigure with override

然后用DBCC CHECKDB ('数据库名')看看有没有错误

如果上面还是不行,试试吧数据库设为紧急模式,应该可以看到数据了,在把数据导出到一个新的数据库
pengdali 2003-10-26
  • 打赏
  • 举报
回复
你先删掉旧的数据库。


EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
加载更多回复(2)

34,875

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧