数据库置疑修复方法(适用所有软件)
先停止数据库,复制备份LDF和MDF文件并删除数据库目录下LDF文件,然后依次执行下方七条语句
 
   --1.设置数据库为可更新状态 
 use master 
 go 
 sp_configure 'allow updates',1 
 go 
 reconfigure with override 
 go 
 
  --2.将数据库模式改为紧急 
 ALTER DATABASE 数据库名称 SET EMERGENCY  --注意空格分隔 
 
  --3.更改数据库单用户使用模式 
 alter database 数据库名称 set Single_user  --单用户(若执行失败,看下方附录1,手动改单用户) 
 
  --4.重建日志文件 
 dbcc checkdb('数据库名称',REPAIR_ALLOW_DATA_LOSS) 
--(若执行失败,提示“数据库XXX已打开,并且一次只能有一个用户访问”执行下方附录2语句
  --执行后立刻执行这条语句,慢一步都不行) 
 
  --5.修复数据库状态 (如果有报错就多查几遍) 
 DBCC CHECKDB('数据库名称') 
 DBCC CHECKDB ('数据库名称','repair_rebuild') 
 DBCC CHECKDB ('数据库名称','repair_allow_data_loss') 
 Go
 
  --6.取消单用户使用模式 
 sp_dboption '数据库名称','single user','false' 
 go 
 
  --7.改变数据库可更新状态 
 sp_configure 'allow updates', 0 
 reconfigure with override 
 Go 
 ———————————————————————— 
附录1
右键相应的数据库——属性——选项——限制访问改为SINGLE_USER,即为单用户模式
   
  
附录2
 DECLARE @DBName SYSNAME; 
 SET @DBName = '数据库名称'; --这个是要删除的数据库库名  
 
 DECLARE @KSQL NVARCHAR(1000) 
 DECLARE tb CURSOR LOCAL 
 FOR  
 SELECT 
  KSQL = 'KILL ' + CAST([sps].[spid] AS NVARCHAR(10)) 
 FROM [sys].[sysprocesses] AS sps 
 WHERE dbid = DB_ID(@DBName)--查询@DBName相关的线程 
 
 --循环杀掉要删除数据的相关线程 
 OPEN tb 
 FETCH NEXT FROM tb INTO @KSQL 
 WHILE @@FETCH_STATUS = 0  
 BEGIN  
  EXECUTE(@KSQL); 
  FETCH NEXT FROM tb INTO @KSQL 
 END  
 CLOSE tb  
 DEALLOCATE tb