误删除了SQL Server中的数据库,请求恢复方法,在线等待....

时间:2022-03-16 00:38:20
我误删除了SQL Server中的数据库,马上停止了对硬盘的一切操作,然后用EasyRecovery恢复,虽然EasyRecovery能找到删除的MDF和LDF文件,
可是在SQL中却无法挂载,我用16进制编辑软件查看MDF文件,发现有开始和结尾的数据是错误的,只有中间一部分是正确的.
请问我还能恢复吗?在线等待.
要是恢复不了我就惨了啊....

16 个解决方案

#1


用log explorer for sqlserver从.ldf文件中恢复

前提是你记录了日志

#2


文件都删了,虽然用EasyRecovery恢复了可是文件已经有损坏,所以是无法恢复了

log   explorer 可以恢复数据,但不能恢复数据库文件

#3


日志是LDF文件吗?

#4


ldf是EasyRecovery恢复的,可能也有错误

#5


示例
下面的示例将 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'


#6


你可以尝试用finaldata这个软件吧误删除的mdf和log文件找回来,
如果你mdf文件删除后,mdf文件所在的那个盘没有再拷贝文件过去,那么你吧finaldata软件安装导另外一个盘,这样你有90%的可能性找回你的mdf文件,如果mdf文件所在的那个盘再mdf文件删除后有有文件变更操作,比如在那个盘里面拷过去了其它文件,就有可能把删除的mdf文件破坏,这样找回mdf文件的可能性就大大降低了

#7


不好意思,误会楼主的意思了.

2楼是对的

#8


看来你的情况很严重,你可以使用一下的方法试着把mdf,log附加到数据库中,
之后问题就好解决了


--只有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  

#9


log       explorer   可以恢复数据

#10


先用下面的工具恢复被删除掉的数据库文件(*.mdf,*.ldf)   
    
  **************************************************************************   
  特别注意,任何对磁盘的操作,包括安装软件,都可能破坏已经删除的文件,导致文件恢复失败.   
    
  所以建议你在另一台电脑上安装上述文件恢复工具.   
  并将你的硬盘挂到该电脑上进行文件恢复.   
  **************************************************************************   
  =============================================================   
  文件恢复工具   
    
  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(邹建)原创

#11


同情LZ的处境。叹息一声,如果有个备份就好了....

等我那天连备份都没得玩的时候再仔细研究一下抢救吧。

留个记号。

#12


如果是文件被删除,在没有做其他文件复制/删除/移动等操作的情况下,可以利用一些反删除工具来恢复,例如2楼所说的工具
在恢复的文件中选择与数据库同名的mdf/ldf文件,将其恢复后附加即可

如果未对硬盘做过操作,应该恢复功能的可能性很大!!

#13


删除以后我确实没有做任何操作
可是用EasyRecovery恢复的文件无法挂载
提示不是有效的SQL文件
用16进制编辑软件打开MDF和LDF看
发现开头和结尾的数据不正确

#14


FinalData OEM v2.0.CN.rar
R-Studio_v2.0.rar
数据恢复大师.exe
-------
恢复附加(曾用2G数据库测试没有问题,楼主用以上软件恢复试试),

#15


要是恢复 出来的文件已经损坏那是没戏了呀

#16


给你一个教训,要记得做备份

#1


用log explorer for sqlserver从.ldf文件中恢复

前提是你记录了日志

#2


文件都删了,虽然用EasyRecovery恢复了可是文件已经有损坏,所以是无法恢复了

log   explorer 可以恢复数据,但不能恢复数据库文件

#3


日志是LDF文件吗?

#4


ldf是EasyRecovery恢复的,可能也有错误

#5


示例
下面的示例将 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'


#6


你可以尝试用finaldata这个软件吧误删除的mdf和log文件找回来,
如果你mdf文件删除后,mdf文件所在的那个盘没有再拷贝文件过去,那么你吧finaldata软件安装导另外一个盘,这样你有90%的可能性找回你的mdf文件,如果mdf文件所在的那个盘再mdf文件删除后有有文件变更操作,比如在那个盘里面拷过去了其它文件,就有可能把删除的mdf文件破坏,这样找回mdf文件的可能性就大大降低了

#7


不好意思,误会楼主的意思了.

2楼是对的

#8


看来你的情况很严重,你可以使用一下的方法试着把mdf,log附加到数据库中,
之后问题就好解决了


--只有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  

#9


log       explorer   可以恢复数据

#10


先用下面的工具恢复被删除掉的数据库文件(*.mdf,*.ldf)   
    
  **************************************************************************   
  特别注意,任何对磁盘的操作,包括安装软件,都可能破坏已经删除的文件,导致文件恢复失败.   
    
  所以建议你在另一台电脑上安装上述文件恢复工具.   
  并将你的硬盘挂到该电脑上进行文件恢复.   
  **************************************************************************   
  =============================================================   
  文件恢复工具   
    
  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(邹建)原创

#11


同情LZ的处境。叹息一声,如果有个备份就好了....

等我那天连备份都没得玩的时候再仔细研究一下抢救吧。

留个记号。

#12


如果是文件被删除,在没有做其他文件复制/删除/移动等操作的情况下,可以利用一些反删除工具来恢复,例如2楼所说的工具
在恢复的文件中选择与数据库同名的mdf/ldf文件,将其恢复后附加即可

如果未对硬盘做过操作,应该恢复功能的可能性很大!!

#13


删除以后我确实没有做任何操作
可是用EasyRecovery恢复的文件无法挂载
提示不是有效的SQL文件
用16进制编辑软件打开MDF和LDF看
发现开头和结尾的数据不正确

#14


FinalData OEM v2.0.CN.rar
R-Studio_v2.0.rar
数据恢复大师.exe
-------
恢复附加(曾用2G数据库测试没有问题,楼主用以上软件恢复试试),

#15


要是恢复 出来的文件已经损坏那是没戏了呀

#16


给你一个教训,要记得做备份