恢复数据库2000质疑

--前提是硬盘没问题.如果硬盘本来就有问题.次方法可能无效
--1.停止sql 服务,获取数据库路径,删掉日志文件 
use master 
go
select name,reverse(substring(reverse(filename),charindex('\',reverse(filename)),1000))  from sysdatabases 


--2.启动sql 服务
use master
go
sp_configure 'allow update',1 

reconfigure with override
go
update sysdatabases set status = 32768 where name = 'testdb'
go

--重建数据库日志文件
dbcc rebuild_log('hydee','F:\testdb\data\testdb_log.ldf')  --最好在原路径上面吧.文件夹一点要原来就存在,不然会提示错误.

go

use master

update sysdatabases set status = 8 where name = 'testdb'

Go


sp_configure'allow updates',0

reconfigure with override

Go
--这个时候.数据库应该已经不是置疑的.并且可以使用了.只是有部分损坏

--3.修复数据库
use master 
declare @databasename varchar(255) 
set @databasename='testdb' 
exec sp_dboption @databasename, N'single', N'true' 
dbcc checkdb(@databasename,REPAIR_REBUILD) 
dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) 
exec sp_dboption @databasename, N'single', N'false'

--最后修复完.再dbcc checkdb一次呗,暂时还没试过不行的.
--这样可以省去重新改传输序号.而且有些店还没有备份的.
-------------------------------------------------------------


--exec p_dboptimize 重建索引
exec sp_dboption 'testdb','single user',true    --设置单用户模式
--dbcc checktable ('usertable',repair_allow_data_loss)  --修复表允许丢失,谨慎使用
dbcc checktable ('usertable',REPAIR_REBUILD)  --修复表
dbcc dbreindex(u_ware_ext)         --重建所有索引
exec sp_dboption 'testdb','single user',false --关闭单用户
dbcc checkdb    --检查修复数据库

猜你喜欢

转载自www.cnblogs.com/binghou/p/9097444.html