您的位置:   主页 > 技术文章

使用dbcc语句修复sql置疑数据库文件

时间:2011-01-28 10:02来源:青岛数据恢复 作者:青岛四通数据恢复公司 点击:196次




  USEMA STER

 GO

1RECONFIGUREWITHOVERRIDE --表示可以更改系统表  SP_CONFIGURE'A LLOWUPDA TES'.

 GO

 UPDA TESYSDA TA BA SESSETSTA TUS=32768WHERENA ME='置疑的数据库名'--设置数据库为紧急模式

 Go

 sp_dbopt'置疑的数据库名'.'true'--设置数据库为单用户模式 'singluser'.

 Go

 DBCCCHECKDB'置疑的数据库名'  --检查数据库错误

 Go

 updsysdatabassetstatu=28wherename='置疑的数据库名'--恢复数据库为正常模式

 Go

0reconfigurwithoverrid sp_configur'allowupdates'.e

 Go

 sp_dbopt'置疑的数据库名'.'false'singluser'.'

 Go

 

 

 

 

 

这里是最好的恢复。上面的语句基本可以满足 MDF没有损坏。

 

假如MDF有损坏。数据库无法完整修复里可以考虑允许丢失数据修复,并且做DBCC里有N多错误。方法如下

 




 usmaster

declar@databasenamvarchar255

set@databasename='要恢复的数据库名称'

execsp_dboption@databasename.N'true'--将目标数据库置为单用户状态 N'single'.

REPA IR_A LLOW_DA TA _LOSS dbcccheckdb@databasename.

REPA IR_REBUILD dbcccheckdb@databasename.

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

 

 

 

 

 

 

如果顺利的话。以上搞完之后DBCC还是出现错误,应该能解决问题。如果运气实在不好。那可以用终极办法

具体方法如下对表做允许数据丢失的修复。

 




 usmaster

declar@databasenamvarchar255

set@databasename='要恢复的数据库名称'

execsp_dboption@databasename.N'true'--将目标数据库置为单用户状态 N'single'.

REPA IR_A LLOW_DA TA _LOSSexecsp_msforeachtDBCCCHECKTA BLE''?''



 把数据库导成一个新库来代替旧库


企业管理器--右键你数据库--所有任务--导出数据

--目标标数据库选择新建

--选择"两个sql数据库之间复制对象和数据"

其他根据需要选择 --把"包括扩展属性"选上.

--最后完成

 

 

 

哈哈.就直接把那MDF扔到回收站算了如果还有问题..

 

 

大致有这么几种这几步一般会出现各种各样的问题.

 




 1呈现“未能在数据库 'approve_new'中运行 BEGINPA NSA CTION因为该数据库处于回避恢复模式。sp_dboption命令失败。

出现这样问题的解决:将数据库分离后再附加(或者重启数据库服务)

 

 

 

 

 

 




 2由于文件不可访问,

2由于文件不可访问。 < 2由于文件不可访问。或者内存或磁盘空间不足,所以无法打开数据库 'approve_new'详细信息请参阅 SQLServer错误日志。


1查询分析器里执行如下语句

sp_configur'allowupdates'.1

go

reconfigurwithoverride

go

usmaster

go

updsysdatabassetstatu=32768

wherename='UFDA TA _003_2006'

go

sp_configur'allowupdates'.0

go

reconfigurwithoverride

2再在查询分析器里执行如下语句

usemaster

'日志物理路径'--重建日志 dbccrebuild_log'数据库名'.

 

 

 

 execsp_msforeachtDBCCCHECKTA BLE''?''.>

execsp_msforeachtprint''?''

sql数据库恢复

分类:数据库/XML

 

 

 

 

大体思路是这样的

1重建日志

  先建一个同名的数据库。停掉数据库,并且对应的文件名也得相同。然后到建立的这个数据库的目录下将对应的两个文件删除,然后把MDF拷贝到这个目录下。

便看到这个数据库处于置疑状态。   启动数据库。

 

2消除置疑状态