您的位置:首页 > 数据库

MS SQL SERVER 2005 MDF文件单独附加

2011-06-30 13:29 597 查看
MS SQL SERVER 2005 MDF文件单独附加

方法一

从SQL SERVER 2005起,如果数据库不是干净关闭,为了维护一致性,在单独使用mdf进行附加时,SQL SERVER将报错且不能附加。

通过观察,发现MS SQL SERVER将状态值记录在MDF文件第9页(0x12000)的第0x84字节处。只要将该4字节改为0x4000 0000,就可以让SQL SERVER认为是干净关闭了。这样就可以单独使用mdf附加了。但是,请注意:即使附加成功,数据可能存在不一致风险。

为此,我写了一个小工具(链接见下),专门进行修改的。该工具已通过SQL SERVER 2005, 2008测试。

工具下载:http://download.csdn.net/source/3407041

方法二

根据网友dlcy
(http://topic.csdn.net/u/20110630/11/8016d44c-b7a3-42db-91d7-0263c5239bdf.html
)的提示,可以先替换后修复。翻看以前翻译的一篇博文
,曾经介绍过该方法(现在居然忘了,罪过罪过)。具体流程如下:

--1.创建一个和原数据库同名的数据库,要求文件名相同、文件个数相同。

create database test

on primary (name=f1, filename='d:/f1.mdf')

log on(name=l1, filename='d:/l1.ldf')

--2.将新生成的数据库置为脱机

alter database test set offline

--3.用旧的f1.mdf文件替换掉新生成数据库的f1.mdf文件

--4.将数据库置为在线

alter database test set online

--5.此时完数据库应该是不能访问的。

--将数据库置为紧急模式

alter database test set emergency

--6.将数据库置为单用户方式,下面的命令要求这样。

sp_dboption 'test', 'single user', true

--7.修复数据库

dbcc checkdb(test, REPAIR_ALLOW_DATA_LOSS )

--修复结束发现数据库已从紧急模式变成在线模式了。

--8.恢复数据库为多用户方式

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