数据库置疑处理

现象说明:新备份出的数据库Geb,在还原时报错"Microsoft SQL-DMO (ODBC SQLState: 42000)" 


解决方法: 


分离出还原失败的数据库Geb 
先创建一个同样的数据库Geb 
停掉server服务,用旧的数据文件覆盖新创建的文件(只要mdf就可以)。    
启动server服务    
运行以下命令    
sp_configure   'allow'   ,1    
reconfigure   with   override    
update   sysdatabases   set   status=32768   where   name='Geb'    
dbcc   rebuild_log('Geb','d:\database\newlog.ldf')    
update   sysdatabases   set   status=0   where   name='Geb'    
sp_configure   'allow',0    
reconfigure   with   override    
dbcc   checkdb('Geb')    


若发现有错误,还要进一步找出出错的地方,可以先检查 
DBCC   CHECKTABLE   (sysobjects)  
DBCC   CHECKTABLE   (sysindexes)  
DBCC   CHECKTABLE   (syscolumns   )  
DBCC   CHECKTABLE   (systypes)  
DBCC CHECKTABLE ( '表名 ',REPAIR_ALLOW_DATA_LOSS) 
DBCC   CHECKDB   ( 'database_name '   ,REPAIR_ALLOW_DATA_LOSS   )  
dbcc dbreindex(’database_name.dbo.Employee’,’’,90) 


  WITH   NO_INFOMSGS  
DBCC   CHECKTABLE('dbo.xxx')   


'dbo.xxx'是表面,查到有50个一致性错误


然后用下面的语句进行修复:
    
alter   database    你要修复的数据库名   set   single_user   with   rollback   immediate   
go   
dbcc   checktable('dbo.xxx',repair_allow_data_loss)   
go


修复无错后注意要恢复数据库的多用户使用状态,否则整个数据库处于锁定状态,一次只能有一个人访问。


alter   database    你要修复的数据库名   set   multi_user  


go
exec   sp_dboption   '你的数据库名 ',   'single   user ',   'true ' 
Go 




DBCC   CHECKTABLE( '库存管理_库存明细帐1 ',repair_allow_data_loss) 
go 


sp_dboption   '你的数据库名 ',   'single   user ',   'false ' 
Go 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值