右键置疑状态的数据库-->所有任务-->脱机
右键脱机状态的数据库-->所有任务-->联机新建一同名数据库(文件名,文件组都和原来的一样),然后停止数据库服务,
用原来文件替换新建的数据库文件,启动数据库,该数据库被设未suspect然后把数据库改成紧急模式:
sp_configure 'allow', 1
reconfigure with override
update sysdatabases set status = 32768 where name = '数据库名'把LDF文件改名,再执行
DBCC REBUILD_LOG ('数据库名', 'E:\fdzz\database\fdzz1204_Log.LDF' )恢复数据库紧急模式
update sysdatabases set status = 0 where name = '数据库名'
执行
restore database 数据库名 WITH RECOVERY
sp_configure 'allow', 0
reconfigure with override然后用DBCC CHECKDB ('数据库名')看看有没有错误如果上面还是不行,试试吧数据库设为紧急模式,应该可以看到数据了,在把数据导出到一个新的数据库
这个问题比较复杂,引起的原因页很多。另外,你备份后的数据如果是在置疑之后备份的恢复之后也是置疑的。  
数据库置疑之后,你可以查看系统数据库maseter中的sysdatabase中的status列,如果该列值是256表示置疑  
你可以手工恢复  
必须以sa登陆  
USE  master  
GO  
sp_configure  'allow  updates',  1  
GO  
RECONFIGURE  WITH  OVERRIDE  
GO  
sp_resetstatus    
go  
 
update  sysdatabase    
set  status  =  status  -256  
where  dbname="your  database  name  here"  
and  status&256=  256(或者直接写256)  
go  
sp_configure  'allow  updates',  1  
GO  
RECONFIGURE  WITH  OVERRIDE  
GO  
sp_resetstatus    
go  
这样一般能恢复
sp_configure 'allow updates',1
go
reconfigure with override
go
use master
update sysdatabases set status =-32768 where name='数据库名'
go
sp_configure 'allow updates',0
go
reconfigure with overrideselect * from sysdatabasessp_configure 'allow updates',1
go
reconfigure with override
go
use master
update sysdatabases set status =0 where name='数据库名'
go
sp_configure 'allow updates',0
go
reconfigure with overrideselect * from sysdatabases

解决方案 »

  1.   

    新建一同名数据库(文件名,文件组都和原来的一样),然后停止数据库服务,用原来文件替换新建的数据库文件,启动数据库,该数据库被设为suspect然后把数据库改成紧急模式:
    sp_configure 'allow', 1
    reconfigure with override
    update sysdatabases set status = 32768 where name = '数据库名'把LDF文件改名,再执行
    DBCC REBUILD_LOG ('数据库名', 'E:\fdzz\database\fdzz1204_Log.LDF' )恢复数据库紧急模式
    update sysdatabases set status = 0 where name = '数据库名'
    执行
    restore database 数据库名 WITH RECOVERY
    sp_configure 'allow', 0
    reconfigure with override然后用DBCC CHECKDB ('数据库名')看看有没有错误如果上面还是不行,试试吧数据库设为紧急模式,应该可以看到数据了,在把数据导出到一个新的数据库
      

  2.   

    前提是你的log还在,祝楼主成功!
      

  3.   

    /*--重置置疑状态
    1.系统方法:
    如果 sql server 因为磁盘驱动器不再有可用空间,而不能完成数据库的恢复,
    那么 microsoft® sql server™ 2000 会返回错误 1105 
    并且将 sysdatabases 中的 status 列设为置疑。按下面的步骤解决这个问题: 执行 sp_resetstatus。
    语法为:
    sp_resetstatus '数据库名'
    用 alter database 向数据库添加一个数据文件或日志文件。停止并重新启动 sql server。 用新的数据文件或日志文件所提供的额外空间,sql server 应该能完成数据库的恢复。释放磁盘空间并且重新运行恢复操作。 sp_resetstatus 关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项。
    --*/--2.手工重置置疑状态
    use master 
    go
    sp_configure 'allow updates',1 reconfigure with override 
    go
    declare @dbname varchar(30)
    set @dbname='你要处理的数据库名'if @@trancount > 0
    print '正在进行事务处理,操作不能进行'
    else if suser_id()!=1
    print '你不是系统管理员(sa),不能进行此操作'
    else if not exists(select 1 from master..sysdatabases where name=@dbname)
    print '你要操作的数据库不存在'
    else if not exists(select 1 from master..sysdatabases where name= @dbname and status & 256 = 256)
    print '你的数据库没有被置疑'
    else
    begin
    begin tran
    update master..sysdatabases set status = status ^ 256 where name = @dbname
    if @@error != 0 or @@rowcount != 1
    rollback tran
    else 
    begin
    commit tran
    print '操作成功,请重新启动SQL'
    end
    end
    go 
    sp_configure 'allow updates', 1 reconfigure with override 
    go 
      

  4.   

    把LDF文件改名,再执行
    DBCC REBUILD_LOG ('数据库名', 'E:\fdzz\database\fdzz1204_Log.LDF' )
    这句是什么意思不懂呀