SQL SERVER 2005(2008)

只有mdf文件的数据恢复方法

1、新建SharePoint_Config 数据库

2、停止SQL SERVER 2005,将原来的SharePoint_Config .mdf数据库文件覆盖刚新建的SharePoint_Config .mdf数据库文件,重新启动数据库,
此时数据库中的表不能正常读取。

3、将数据库设置为紧急状态:

alter database SharePoint_Config set emergency
此时数据处于紧急状态,库中的表可以读取

4、执行如下代码:

use master

declare @databasename varchar(255)

set @databasename='SharePoint_Config'         --设置变量为数据名

exec sp_dboption @databasename, N'single', N'true' --将数据库置为单用户状态

dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)

dbcc checkdb(@databasename,REPAIR_REBUILD)

exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态

数据库正常。

------------------------------------------------------------------------------------

SqlServer2000

1、开启数据库
2、从企业管理器,建一个同名的数据库
3、停止sql server
4、用原mdf文件覆盖新建库的数据库文件
5、重启sql server(这时数据库应该是置疑)
6、修改服务器设置:允许对系统目录进行直接修改
sp_configure 'allow updates',1 reconfigure with override
7、将数据库置为紧急状态:
update master.dbo.sysdatabases set status = 32768 where name = '数据库名'
8、删除新的ldf文件,重建日志:
dbcc rebuild_log('数据库名', 'f:\数据库名_log_new.ldf')--假设把新日志在f盘
9、update master.dbo.sysdatabases set status = 16 where name = '数据库名'
10、修改服务器设置:取消 允许对系统目录进行直接修改
sp_configure 'allow updates', 0 reconfigure with override
11、再使用检查工具修复错误
use [数据库名]
alter database [数据库名] set single_user with rollback immediate
dbcc checkdb ('数据库名',REPAIR_ALLOW_DATA_LOSS)
alter database [数据库名] set multi_user
执行完毕之后,如果还有错误,重复执行,直到没有错误为止。