我误删除了SQL Server中的数据库,马上停止了对硬盘的一切操作,然后用EasyRecovery恢复,虽然EasyRecovery能找到删除的MDF和LDF文件,
可是在SQL中却无法挂载,我用16进制编辑软件查看MDF文件,发现有开始和结尾的数据是错误的,只有中间一部分是正确的.
请问我还能恢复吗?在线等待.
要是恢复不了我就惨了啊....
可是在SQL中却无法挂载,我用16进制编辑软件查看MDF文件,发现有开始和结尾的数据是错误的,只有中间一部分是正确的.
请问我还能恢复吗?在线等待.
要是恢复不了我就惨了啊....
下面的示例将 pubs 中的两个文件附加到当前服务器。EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'
如果你mdf文件删除后,mdf文件所在的那个盘没有再拷贝文件过去,那么你吧finaldata软件安装导另外一个盘,这样你有90%的可能性找回你的mdf文件,如果mdf文件所在的那个盘再mdf文件删除后有有文件变更操作,比如在那个盘里面拷过去了其它文件,就有可能把删除的mdf文件破坏,这样找回mdf文件的可能性就大大降低了
之后问题就好解决了
--只有mdf文件的两种情况的解决办法由于种种原因,我们如果当时仅仅备份了mdf文件,那么恢复起来就是一件很麻烦的事情了。
如果您的mdf文件是当前数据库产生的,那么很侥幸,也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库,但是会出现类似下面的提示信息:
设备激活错误。物理文件名'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' 可能有误。已创建名为'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF' 的新日志文件。但是,如果您的数据库文件是从其他计算机上复制过来的,那么很不幸,也许上述办法就行不通了。你也许会得到类似下面的错误信息:
服务器: 消息1813,级别16,状态2,行1 未能打开新数据库'test'。CREATE DATABASE 将终止。设备激活错误。物理文件名'd:\test_log.LDF' 可能有误。怎么办呢?别着急,下面我们举例说明恢复办法。
A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。
B.停掉数据库服务器。
C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。
D.启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。
E.设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
use master go sp_configure 'allow updates',1 go reconfigure with override go F.设置test为紧急修复模式
update sysdatabases set status=-32768 where dbid=DB_ID('test') 此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表。
G.下面执行真正的恢复操作,重建数据库日志文件
dbcc rebuild_log('test', 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf') 执行过程中,如果遇到下列提示信息:
服务器: 消息5030,级别16,状态1,行1 未能排它地锁定数据库以执行该操作。
DBCC 执行完毕。如果DBCC 输出了错误信息,请与系统管理员联系。
说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。
正确执行完成的提示应该类似于:
警告:数据库'test' 的日志已重建。已失去事务的一致性。应运行DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
DBCC 执行完毕。如果DBCC 输出了错误信息,请与系统管理员联系。
此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。
H.验证数据库一致性(可省略)
dbcc checkdb('test') 一般执行结果如下:
CHECKDB 发现了0 个分配错误和0 个一致性错误(在数据库'test' 中)。
DBCC 执行完毕。如果DBCC 输出了错误信息,请与系统管理员联系。
I.设置数据库为正常状态
sp_dboption 'test','dbo use only','false' 如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。
J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成:
sp_configure 'allow updates',0 go reconfigure with override go
**************************************************************************
特别注意,任何对磁盘的操作,包括安装软件,都可能破坏已经删除的文件,导致文件恢复失败.
所以建议你在另一台电脑上安装上述文件恢复工具.
并将你的硬盘挂到该电脑上进行文件恢复.
**************************************************************************
=============================================================
文件恢复工具
EasyRecovery
下载: http://www.skycn.com/soft/13950.html
优秀的数据恢复工具,可把受到病毒破坏、格式化、删除的硬盘数据抢救回来!
6.0版本使用新的数据恢复引擎,并且能够对ZIP文件以及微软的Office系列
文档进行修复!6.0中还包含了Ontrack Data Advisor!其他更新请看软件
自带的Readme
FinalData NT Standard 1.5
FinalData 可以回收在 Windows NT/2000/XP 中被误删的文件。
它还可以恢复你的数据,主引导记录(MBR),引导扇区,FAT。
它能找回其他类似工具所找不到的,安全,快速,专业
Acronis RecoveryExpert 2003
下载: http://www.91now.com/downsky/soft/7175.htm
Acronis RecoveryExpert是一个数据恢复软件,它功能强大,甚至可以恢复已经删除的
硬盘分区!如果你的系统已经损坏,软件支持你通过能启动的光碟开机来进行数据恢复。
它可以让你免受由于其他软件的错误,病毒的破坏甚至于黑客的工具所带来的数据损失。 再用下面的方法附加数据库:
企业管理器
--右键"数据库"
--所有任务
--附加数据库
--选择你的.mdf文件名
--确定
--如果提示没有.ldf文件,是否创建,选择"是"
查询分析器中的方法:
--有数据文件及日志文件的情况
sp_attach_db '数据库名'
,'数据文件名(*.mdf注意要带目录)' --后面可以是用,分隔的该数据库的多个数据文件
,'日志文件名(*.ldf注意要带目录)' --后面可以是用,分隔的该数据库的多个日志文件
--如果只有数据文件的情况
sp_attach_single_file_db '数据库名'
,'数据文件名(*.mdf注意要带目录)' --后面可以是用,分隔的该数据库的多个数据文件
再用下面的方法附加数据库:
这方法是zjcxc(邹建)原创
在恢复的文件中选择与数据库同名的mdf/ldf文件,将其恢复后附加即可如果未对硬盘做过操作,应该恢复功能的可能性很大!!
可是用EasyRecovery恢复的文件无法挂载
提示不是有效的SQL文件
用16进制编辑软件打开MDF和LDF看
发现开头和结尾的数据不正确
R-Studio_v2.0.rar
数据恢复大师.exe
-------
恢复附加(曾用2G数据库测试没有问题,楼主用以上软件恢复试试),