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
方法一
从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
相关文章推荐
- ms sql server 2005数据库日志文件过大,需要清除或者清空
- 将 MS SQL Server 2005 SP2 整合到安装文件中
- MS SQL Server 2005 日志文件过大
- Navicat for SQLServer 如何附加MDF文件
- 错误日志——Sql附加数据库无法打开物理文件“xxx.mdf"。操作系统错误 5:"5(拒绝访问。)"。 (Microsoft SQL Server,错误: 5120)”
- 将 MS SQL Server 2005 SP2 整合到安装文件--【脚本修正】
- mssql server .ldf和.mdf的文件附加数据库的sql语句
- ms sql server 2005数据库日志文件过大,需要清除或者清空
- SQL附加数据库无法打开物理文件 "XXXX.mdf"。操作系统错误 5:"5(拒绝访问。)"。 (Microsoft SQL Server,错误: 5120)解决
- [转+自己修改]将 MS SQL Server 2005 SP2 整合到安装文件
- ms sql server 2005数据库日志文件过大,需要清除或者清空
- 《Microsoft SQL Server 2008 MDX Step by Step》附加MDF文件失败的解决办法
- 《Microsoft SQL Server 2008 MDX Step by Step》附加MDF文件失败的解决办法
- ms sql server 2005数据库日志文件过大,需要清除或者清空
- SQL附加数据库无法打开物理文件 "XXXX.mdf"。操作系统错误 5:"5(拒绝访问。)"。 (Microsoft SQL Server,错误: 5120)解决
- 将 MS SQL Server 2005 SP2 整合到安装文件
- 只有mdf文件的SQL SERVER恢复方法
- PHP5连接MS SQL Server 2005
- MS SQLServer数据库日志文件丢失的还原方法
- 安装Ms SQL Server 2005 开发版时出现性能计数器要求安装错误的解决办法