22,300
社区成员




--以下方法自己用过,一定机率可行
一、分离数据库,再附加
二、
1.将已破坏的老数据库更名如Test_Data.Mdf ==>Test_Data.Md_ ,并在原来位置新建一同名数据库 如Test_Data.Mdf .
2. 停止SQL, 将新数据库更名(Test_Data.Mdf ==> Test_Data.Md2),
待修复老数据库更名为原先名称Test_Data.Md_ ==> Test_Data.Mdf
3.启动SQL , 并进入查询分析器中, 执行如下命令:
USE MASTER
sp_configure 'allow', 1
reconfigure with override
update sysdatabases set status = 32768 where name = 'Test'
4. 把LDF文件改名,再执行
DBCC REBUILD_LOG ('Test', 'E:\test\Test_Log.LDF' )
5. 恢复数据库紧急模式
update sysdatabases set status = 0 where name = 'Test'
6. 执行
restore database Test WITH RECOVERY
sp_configure 'allow', 0
reconfigure with override
7. 检查数据库看看有没有错误, 应该可以看到数据了
DBCC CHECKDB ('Test')
--把tigerzz改为你的数据库
--1,先停止服务器,然后备份tigerzz_Data.mdf和tigerzz_Log.ldf文件。
--2,启动服务器,然后删除数据库tigerzz。
--3,建立一个供恢复使用的数据库tigerzz。
--4,停止数据库服务器。
--5,将刚才生成的数据库的日志文件tigerzz_Log.ldf删除,用要恢复的数据库tigerzz_Data.mdf文件
-- 覆盖刚才生成的数据库数据文件tigerzz_Data.mdf。
--6, 启动数据库服务器。此时数据库tigerzz的状态为“置疑”。
--7,在查询分析器运行下面代码,允许对系统目录修改
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
--8,设置数据库tigerzz为紧急修复模式
update sysdatabases set status = 32768 where name ='tigerzz'
go
--9,重建数据库日志文件
dbcc rebuild_log('tigerzz','E:\Program Files\Microsoft SQL Server\MSSQL\Data\tigerzz_Log') --改为你的目录
go
--10,验证数据库一致性
DBCC CHECKDB('tigerzz')
go
--11,恢复数据库为正常状态
sp_dboption 'tigerzz','dbo use only','false'
go
--12,禁止修改系统选项
sp_configure 'allow updates',0
go
reconfigure with override
go
MSDB数据库置疑后的恢复:
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1
RECONFIGURE WITH OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='msdb'
Go
sp_dboption 'msdb', 'single user', 'true'
Go
DBCC CHECKDB('msdb')
Go
update sysdatabases set status =28 where name='msdb'
Go
sp_configure 'allow updates', 0
reconfigure with override
Go
sp_dboption 'msdb', 'single user', 'false'
Go