试了2005和2008的,都不行。标题: Microsoft SQL Server Management Studio
------------------------------附加数据库 对于 服务器“JGJ\SQL2008”失败。  (Microsoft.SqlServer.Smo)有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.0.1600.22+((SQL_PreRelease).080709-1414+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=附加数据库+Server&LinkId=20476------------------------------
其他信息:执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)------------------------------SQL Server 检测到基于一致性的逻辑 I/O 错误 页撕裂(签名应该为: 0xaaaaaaaa,但实际为: 0x5556aaaa)。在文件 'D:\LXMK2008_Data.MDF' 中、偏移量为 0x00000000004000 的位置对数据库 ID 9 中的页 (1:2) 执行 读取 期间,发生了该错误。SQL Server 错误日志或系统事件日志中的其他消息可能提供了更详细信息。这是一个威胁数据库完整性的严重错误条件,必须立即纠正。请执行完整的数据库一致性检查(DBCC CHECKDB)。此错误可以由许多因素导致;有关详细信息,请参阅 SQL Server 联机丛书。
无法打开新数据库 'LXMK2008'。CREATE DATABASE 中止。 (Microsoft SQL Server,错误: 824)有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=824&LinkId=20476------------------------------
按钮:确定
------------------------------

解决方案 »

  1.   

    SQL2008下附加出錯訊息如下:標題: Microsoft SQL Server Management Studio
    ------------------------------伺服器 '172.20.104.111' 的 附加資料庫 失敗。  (Microsoft.SqlServer.Smo)如需說明,請按一下: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.0.1600.22+((SQL_PreRelease).080709-1414+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=附加資料庫+Server&LinkId=20476------------------------------
    其他資訊:執行 Transact-SQL 陳述式或批次時發生例外狀況。 (Microsoft.SqlServer.ConnectionInfo)------------------------------SQL Server 偵測到邏輯的一致性 I/O 錯誤: 損毀頁 (預期的簽章: 0xaaaaaaaa; 實際的簽章: 0x5556aaaa)。這是當在檔案 'D:\Backup\Desktop\Success_ju\LXMK2008_Data\LXMK2008_Data.MDF' 中位移 0x00000000004000 的資料庫識別碼 6 之頁面 (1:2) 進行 讀取 的期間所發生的。SQL Server 錯誤記錄檔和系統事件記錄檔中的訊息,或許可以提供其他詳細資訊。這是嚴重的錯誤狀況,且可能會損及資料庫的完整性,所以必須立即更正。請執行完整的資料庫一致性檢查 (DBCC CHECKDB)。會導致這個錯誤的原因有許多可能性; 如需詳細資訊,請參閱《SQL Server 線上叢書》。
    無法開啟新資料庫 'LXMK2008'。CREATE DATABASE 已經中止。 (Microsoft SQL Server, 錯誤: 824)如需說明,請按一下: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=824&LinkId=20476------------------------------
    按鈕:確定
    ------------------------------
      

  2.   

    MS SQL SERVER数据库置疑后恢复步骤:(LZ可以試一下)--SQL SERVER数据库置疑后恢复步骤   
    --1. 恢复步骤:   
    --a.将smlog_log.ldf文件备份到其它目录下;   
    --b.将源目录下的smlog_log.ldf文件改名为smlog_log_bak.ldf;   
    --c.执行以下语句修改数据库的状态:   
    use Master   
    go   
    update sysdatabases set status=32768 where name='数据库名称'     --修改状态,設為緊急狀態 
    go   
    shutdown with nowait     --停止数据库服务器   
    go   
    --d.退出SQL并在(COMMAND)命令行模式中通过下面的代码重新启动SQL:   
    sqlservr -c -T3608 -T4022     --安全模式启动SQL SERVER
    --e.在查询分析器中执行以下语句来查看刚刚修改过状态的数据库状态:   
    select Name,Status from sysdatabases where Name='数据库名稱'  
    --f.执行以下代码新建日志文件:   
    dbcc traceon(3604)--跟踪   
    dbcc rebuild_log('数据库名称','日志文件全路徑') --文件名要有全路径和扩展名
    --dbcc rebuild_log('prs_msc','d:\mscsql\mssql\data\prs_msc_log.ldf
    --g.将数据库置回正常状态:   
    update sysdatabases set status=0 where name='数据库名称'   
    --h.重新启动数据库后执行以下语句检查数据库:   
    DBCC CHECKDB --如果执行完有错误用以下语句修复   
    --i.要修复数据库必需将数据库改为单用户模式:   
    Exce sp_dboption '数据库名称','single user','true'---('false'恢复多用户)   
    --j.执行以下语句修复数据库:   
    DBCC CHECKDB('数据库名称',REPAIR_ALLOW_DATA_LOSS)   
    REPAIR_ALLOW_DATA_LOSS:是比较高级的修复方式   
    REPAIR_FAST:是简单快速的修复方式
    /*
    處理状态就为"置疑"的數據庫
    备份数据文件,然后按下面的步骤处理:   
    1.新建一个同名的数据库(数据文件与原来的要一致)   
    2.再停掉sql server(注意不要分离数据库)   
    3.用原数据库的数据文件覆盖掉这个新建的数据库   
    4.再重启sql server   
    5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)   
    6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用数据库的脚本创建一个新的数据库,并将数据导进去就行了.*/
    USE   MASTER   
    GO   
    SP_CONFIGURE 'ALLOW UPDATES',1
    GO
    RECONFIGURE WITH OVERRIDE   
    GO   
    UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名'   
    Go   
    sp_dboption '置疑的数据库名','single user','true'   
    Go   
    DBCC CHECKDB('置疑的数据库名')     
    Go   
    update sysdatabases set status=28 where name='置疑的数据库名'   
    Go   
    sp_configure 'allow updates',0
    GO
    reconfigure with override   
    Go     
    sp_dboption '置疑的数据库名', 'single user','false'   
    Go    /*
    只有mdf文件的恢复技术
    由于种种原因,我们如果当时仅仅备份了mdf文件,那么恢复起来就是一件很麻烦的事情了。
    如果您的mdf文件是当前数据库产生的,那么很侥幸,也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库,但是会出现类似下面的提示信息
    设备激活错误。物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' 可能有误。
    已创建名为 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF' 的新日志文件。
    但是,如果您的数据库文件是从其他计算机上复制过来的,那么很不幸,也许上述办法就行不通了。你也许会得到类似下面的错误信息
    服务器: 消息 1813,级别 16,状态 2,行 1
    未能打开新数据库 'test'。CREATE DATABASE 将终止。
    设备激活错误。物理文件名 'd:\test_log.LDF' 可能有误。
    怎么办呢?别着急,下面我们举例说明恢复办法。
    */
    --A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。
    --B.停掉数据库服务器。
    --C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。
    --D.启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。
    --E.设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右--键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
    use master
    go
    sp_configure 'allow updates',1
    go 
    reconfigure with override
    go
    --F.设置test为紧急修复模式
    --在查询管理器里设置如下命令:
    update sysdatabases set status=-32768 where dbid=DB_ID('test')
    --此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表
    --G.下面执行真正的恢复操作,重建数据库日志文件
    dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')
    /*
    执行过程中,如果遇到下列提示信息:
    服务器: 消息 5030,级别 16,状态 1,行 1
    未能排它地锁定数据库以执行该操作。
    DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
    说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。
    正确执行完成的提示应该类似于:
    警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
    DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
    此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。
    */
    --H.验证数据库一致性(可省略)
    dbcc checkdb('test')
    /*一般执行结果如下:
    CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'test' 中)。
    DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。*/
    --I.设置数据库为正常状态
    sp_dboption 'test','dbo use only','false'
    --如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。
    --J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成
    sp_configure 'allow updates',0
    go 
    reconfigure with override
    go
     --日志文件出现问题(丢失或文件格式非法),怎么使数据库恢复正常   
    --如果用sp_attach_single_file 'TEST','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.mdf'失败则需要用下列步骤完成   
    --1.将置疑的数据库分离,将mdf文件移走或改名!   
    sp_detach_db 'TEST'   
    --2.重新在原来目录下建立同名的数据库TEST   
    --3.停掉SQL Service,将先前的mdf文件拷贝回来覆盖(或改名),删除原来的log文件(或改名)   
    --4.启动SQL Service(否则下面的语句没办法运行)   
    --5.将数据库设成紧急模式(status=32768)   
    sp_configure 'allow updates',1   
    reconfigure with override   
    update sysdatabases set status=32768 where name='TEST'   
    --重新建立日志文件   
    DBCC traceon(3604)   
    dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')   
    Go   
    --6.重新启动SQL Service   
    --7.将数据库设置成单用户模式(下面三个语句均可)   
    --sp_dboption 'TEST','single user','true'   
    update sysdatabases set status=4096 where name='TEST'   
    --alter database TEST set Single_user   
        
    --8.检查数据库的完整性和一致性,OK了就可以用了   
    DBCC CheckDB(TEST)   
        
    --9.将数据的访问权限设置成多用户模式   
    sp_dboption 'TEST','single user','false'   
    --或alter database TEST set multi_user   
        
    --10.关闭高级选项   
    sp_configure 'allow updates',0   
    reconfigure with override   --结束 
      

  3.   

    大家好数据库是SQL2000客户没有备份过,唉,郁闷
      

  4.   


    这个方法试过了,可惜最终的数据只能看到几个表,其他表都会报错数据库是SQL2000
      

  5.   

    MSSQL数据库置疑的修复方式1.找到备份出来的 mdf。2.在企业管理器里新建一个同样名字的数据库。
    注意:我们软件创建的数据库名称为:abc.mdf,在企业管理器里创建的名字会默认为:abc_data.mdf,在企业管理器里创建时一定要把 _data去掉,不然不会成功,要报错。3.停掉sql服务器,然后把新建的 mdf和log 文件删除掉,用原来文件替换新建的数
    据库文件,log文件不要。4.启动数据库,并在企业管理器的数据库服务器(即企业管理器里面SQL服务器图表)上点右键找到属性,把其中服务器设置中允许对系统目录直接进行修改选中。5.把数据库改成紧急模式,查询分析器中执行:  sp_configure 'allow', 1
      reconfigure with override
      update sysdatabases set status = 32768 where name = '数据库名'
    6.重建log文件:DBCC REBUILD_LOG ('数据库名', 'E:\f6n.net\database\f6n.net_Log.LDF' )
    其中 E:\f6n.net\database\f6n.net_Log.LDF 为日志文件路径(即是SQL安装目录下data下面将‘f6n.net’改为我的数据库名,即自动生成自己的LDF文件)。7.恢复数据库紧急模式update sysdatabases set status = 0 where name = '数据库名'
    8.把服务器设置中允许对系统目录直接进行修改取消。至此已完成。9.然后用 DBCC CHECKDB ('数据库名') 看看有没有错误
      

  6.   


    原因: 
    通常这个问题是由于硬盘空间不够或硬盘读写错误造成的。 现象: 
    数据库后面有“置疑”字样,查看系统事务日记出现以下错误: 
    错误1--------------------------------------------- 
    错误: 823,严重度: 24,状态: 2 
    I/O error 23(数据错误 (循环冗余检查)。) detected during read at offset 0x00000000200000 in file 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\Jiapei_Data.MDF'. 
    错误2--------------------------------------------- 
    错误: 3313,严重度: 21,状态: 2 
    恢复数据库 'Jiapei' 的日志中记录的操作时出错。出错位置在日志记录 ID (274:377:2)。 
    错误3--------------------------------------------- 
    错误: 3313,严重度: 21,状态: 2 
    Error while redoing logged operation in database 'Jiapei'. Error at log record ID (274:377:2). 
    数据库可以分离,但分离后无法附加,附加时出现“823”号错误。 程序突然连接不数据库了,开企业管理器发现数据库置疑!!!重启数据库后该数据库又找不到了. 解决方法: 1.新建一个同名的数据库 
    2.再停掉sql server 
    3.用suspect数据库的文件覆盖掉这个新建的同名数据库 
    4.再重启sql server 
    5.此时打开企业管理器时新建的同名数据库会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名) USE MASTER 
    GO 
    SP_CONFIGURE 'ALLOW UpdateS',1 RECONFIGURE WITH OVERRIDE 
    GO 
    Update SYSDATABASES SET STATUS =32768 Where NAME='置疑的同名数据库名' 
    Go 
    sp_dboption '置疑的同名数据库名', 'single user', 'true' 
    Go 
    DBCC CHECKDB('置疑的同名数据库名') 
    Go 
    update sysdatabases set status =28 where name='置疑的同名数据库名' 
    Go 
    sp_configure 'allow updates', 0 reconfigure with override 
    Go 
    sp_dboption '置疑的同名数据库名', 'single user', 'true' 
    Go 6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用 
    数据库的脚本创建一个新的数据库,并将数据导进去就行了. 外一篇: 1、新建一同名数据库(文件名,文件组都和原来的一样),然后停止数据库服务,用原来文件替换新建的数据库文件,启动数据库,该数据库被设为suspect 2、把数据库改成紧急模式: 
    sp_configure 'allow', 1 
    reconfigure with override 
    update sysdatabases set status = 32768 where name = '数据库名' 
    3、把LDF文件改名,再执行 
    DBCC REBUILD_LOG ('数据库名', 'E:\fdzz\database\fdzz1204_Log.LDF' ) 
    4、恢复数据库紧急模式 
    update sysdatabases set status = 0 where name = '数据库名' 
    执行 
    restore database 数据库名 WITH RECOVERY 
    sp_configure 'allow', 0 
    reconfigure with override 
    5、然后用DBCC CHECKDB ('数据库名')看看有没有错误 
    6、如果上面还是不行,试试吧数据库设为紧急模式,应该可以看到数据了,在把数据导出到一个新的数据库。 
    其他有用的操作: /*--重置置疑状态 
    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 -------------------------------------------------------------------------------- 可是现在我已经将这个数据库分离出去了,又不能附加进来,所以那个操作sp_resetstatus 就玩不起来了 -------------------------------------------------------------------------------- 右键置疑状态的数据库-->所有任务-->脱机 
    右键脱机状态的数据库-->所有任务-->联机 
    重置置疑状态 
    如果 SQL Server 因为磁盘驱动器不再有可用空间,而不能完成数据库的恢复,那么 
    Microsoft? SQL Server? 2000 会返回错误 1105 并且将 sysdatabases 中的 status 
    列设为置疑。按下面的步骤解决这个问题: 
    1.. 执行 sp_resetstatus。 
    2.. 用 Alter DATABASE 向数据库添加一个数据文件或日志文件。 
    3.. 停止并重新启动 SQL Server。 
    用新的数据文件或日志文件所提供的额外空间,SQL Server 应该能完成数据库的恢 
    复。 
    4.. 释放磁盘空间并且重新运行恢复操作。 
    sp_resetstatus 关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项。 
    注意 只有在您的主要支持提供者指导下或有疑难解答建议的做法时,才可以使用 
    sp_resetstatus。否则,可能会损坏数据库。 
    由于该过程修改了系统表,系统管理员必须在创建这个过程前,启用系统表更新。要启 
    用更新,使用下面的过程: 
    USE master 
    GO 
    sp_configure 'allow updates', 1 
    GO 
    RECONFIGURE WITH OVERRIDE 
    GO 
    过程创建后,立即禁用系统表更新: 
    sp_configure 'allow updates', 0 
    GO 
    RECONFIGURE WITH OVERRIDE 
    GO 
    只有系统管理员才能执行 sp_resetstatus。执行该过程后,立即关闭 SQL Server。 
    语法为: 
    sp_resetstatus database_name 
    下面的例子将关闭 PRODUCTION 数据库的置疑标志。 
    sp_resetstatus PRODUCTION 
    下面是结果集: 
    Database 'PRODUCTION' status reset! 
    WARNING: You must reboot SQL Server prior to accessing this database! 
    sp_resetstatus 存储过程代码 
    下面是 sp_resetstatus 存储过程的代码: 
    IF EXISTS ( Select * from sysobjects where name = 'sp_resetstatus' ) 
    Drop PROCEDURE sp_resetstatus 
    GO 
    Create PROC sp_resetstatus @dbname varchar(30) AS 
    DECLARE @msg varchar(80) 
    IF @@trancount > 0 
    BEGIN 
    PRINT 'Can''t run sp_resetstatus from within a transaction.' 
    RETURN (1) 
    END 
    IF suser_id() != 1 
    BEGIN 
    Select @msg = 'You must be the System Administrator (SA)' 
    Select @msg = @msg + ' to execute this procedure.' 
    RETURN (1) 
    END 
    IF (Select COUNT(*) FROM master..sysdatabases 
    Where name = @dbname) != 1 
    BEGIN 
    Select @msg = 'Database ' + @dbname + ' does not exist!' 
    PRINT @msg 
    RETURN (1) 
    END 
    IF (Select COUNT(*) FROM master..sysdatabases 
    Where name = @dbname AND status & 256 = 256) != 1 
    BEGIN 
    PRINT 'sp_resetstatus can only be run on suspect databases.' 
    RETURN (1) 
    END 
    BEGIN TRAN 
    Update master..sysdatabases SET status = status ^ 256 
    Where name = @dbname 
    IF @@error != 0 or @@rowcount != 1 
    ROLLBACK TRAN 
    ELSE 
    BEGIN 
    COMMIT TRAN 
    Select @msg = 'Database ' + @dbname + ' status reset!' 
    PRINT @msg 
    PRINT '' 
    PRINT 'WARNING: You must reboot SQL Server prior to ' 
    PRINT ' accessing this database!' 
    PRINT '' 
    END 
    GO 
      

  7.   

    試試看重置置疑状态   
      如果   SQL   Server   因为磁盘驱动器不再有可用空间,而不能完成数据库的恢复,那么   Microsoft®   SQL   Server™   2000   会返回错误   1105   并且将   sysdatabases   中的   status   列设为置疑。按下面的步骤解决这个问题:     
        
      执行   sp_resetstatus。   
        
        
      用   ALTER   DATABASE   向数据库添加一个数据文件或日志文件。   
        
        
      停止并重新启动   SQL   Server。     
      用新的数据文件或日志文件所提供的额外空间,SQL   Server   应该能完成数据库的恢复。   
        
      释放磁盘空间并且重新运行恢复操作。     
      sp_resetstatus   关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项。   
        
        
        
      注意     只有在您的主要支持提供者指导下或有疑难解答建议的做法时,才可以使用   sp_resetstatus。否则,可能会损坏数据库。   
        
        
      由于该过程修改了系统表,系统管理员必须在创建这个过程前,启用系统表更新。要启用更新,使用下面的过程:   
        
      USE   master   
      GO   
      sp_configure   'allow   updates',   1   
      GO   
      RECONFIGURE   WITH   OVERRIDE   
      GO   
        
      过程创建后,立即禁用系统表更新:   
        
      sp_configure   'allow   updates',   0   
      GO   
      RECONFIGURE   WITH   OVERRIDE   
      GO   
        
      只有系统管理员才能执行   sp_resetstatus。执行该过程后,立即关闭   SQL   Server。   
        
      语法为:   
        
      sp_resetstatus   database_name   
        
      下面的例子将关闭   PRODUCTION   数据库的置疑标志。   
        
      sp_resetstatus   PRODUCTION   
        
      下面是结果集:   
        
      Database   'PRODUCTION'   status   reset!   
      WARNING:   You   must   reboot   SQL   Server   prior   to   accessing   this   database!   
        
      sp_resetstatus   存储过程代码   
      下面是   sp_resetstatus   存储过程的代码:   
        
      IF   EXISTS   (   SELECT   *   from   sysobjects   where   name   =   'sp_resetstatus'   )   
            DROP   PROCEDURE   sp_resetstatus   
      GO   
        
      CREATE   PROC   sp_resetstatus   @dbname   varchar(30)   AS   
      DECLARE   @msg   varchar(80)   
      IF   @@trancount   >   0   
                  BEGIN   
                        PRINT   'Can''t   run   sp_resetstatus   from   within   a   transaction.'   
                        RETURN   (1)   
                  END   
      IF   suser_id()   !=   1   
                  BEGIN   
                        SELECT   @msg   =     'You   must   be   the   System   Administrator   (SA)'   
                        SELECT   @msg   =   @msg   +   '   to   execute   this   procedure.'   
                        RETURN   (1)   
                  END   
      IF   (SELECT   COUNT(*)   FROM   master..sysdatabases   
                        WHERE   name   =   @dbname)   !=   1   
                  BEGIN   
                        SELECT   @msg   =   'Database   '   +   @dbname   +   '   does   not   exist!'   
                        PRINT   @msg   
                        RETURN   (1)   
                  END   
      IF   (SELECT   COUNT(*)   FROM   master..sysdatabases   
                        WHERE   name   =   @dbname   AND   status   &   256   =   256)   !=   1   
                  BEGIN   
                        PRINT   'sp_resetstatus   can   only   be   run   on   suspect   databases.'   
                        RETURN   (1)   
                  END   
      BEGIN   TRAN   
                  UPDATE   master..sysdatabases   SET   status   =   status   ^   256   
                        WHERE   name   =   @dbname   
                  IF   @@error   !=   0   OR   @@rowcount   !=   1   
                        ROLLBACK   TRAN   
                  ELSE     
                        BEGIN   
                              COMMIT   TRAN   
                              SELECT   @msg   =   'Database   '   +   @dbname   +   '   status   reset!'   
                              PRINT   @msg   
                              PRINT   ''   
                              PRINT   'WARNING:   You   must   reboot   SQL   Server   prior   to     '   
                              PRINT   '                   accessing   this   database!'   
                              PRINT   ''   
                        END   
      GO   
      

  8.   

    這樣再試試先尝试:   
        
      右键置疑状态的数据库-->所有任务-->脱机   
      右键脱机状态的数据库-->所有任务-->联机
      

  9.   


    如果不行:         
      数据库置疑之后,你可以查看系统数据库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       
      这样一般能恢复,good     lucky     to     u
      

  10.   


    如果还不行:   
        
      新建一同名数据库(文件名,文件组都和原来的一样),然后停止数据库服务,用原来文件替换新建的数   
        
      据库文件,启动数据库,该数据库被设未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   ('数据库名')看看有没有错误   
        
      如果上面还是不行,试试吧数据库设为紧急模式,应该可以看到数据了,在把数据导出到一个新的数据库
      

  11.   

    再試試這個,SQL2000数据库置疑解决方法
    1、不要分离数据库。2、执行脚本 USE   MASTER   
      GO   
        
      SP_CONFIGURE   'ALLOW UPDATES',1   RECONFIGURE   WITH   OVERRIDE   
      GO   
        
      UPDATE   SYSDATABASES   SET   STATUS   =32768   WHERE   NAME='DataBase'   
      Go   
        
      sp_dboption   'DataBase',   'single user',   'true'   
      Go   
        
      DBCC   CHECKDB('DataBase')     
      Go   
        
      update   sysdatabases   set   status   =28   where   name='DataBase'   
      Go   
        
      sp_configure   'allow updates',   0   reconfigure   with   override   
      Go     
        
      sp_dboption   'DataBase',   'single user',   'false'   
      Go。
      

  12.   

    再試先分离数据库 企业管理器--右键置疑的数据库--所有任务--分离数据库 
    然后备份你的置疑数据库的文件,再按下面的步骤处理: http://www.mscto.com1.新建一个同名的数据库 
    2.再停掉sql server 3.用置疑数据库的文件覆盖掉这个新建的同名数据库 http://www.mscto.com4.再重启sql server 5.此时打开企业管理器时新建的同名数据库会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名) 
    USE MASTER
    GO SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
    GO 软件开发网 UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='his222'
    Go 
    sp_dboption 'test', 'single user', 'true'
    Go DBCC CHECKDB('test') 
    Go update sysdatabases set status =28 where name='test'
    Go 
    sp_configure 'allow updates', 0 reconfigure with override
    Go 
    sp_dboption 'test', 'single user', 'false'
    Go 6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用
    数据库的脚本创建一个新的数据库,并将数据导进去就行了. 如果这样改不加数据库状态,你就把数据库导成一个新库来代替旧库吧 
    企业管理器--右键你的数据库--所有任务--导出数据
    --目标标数据库选择新建
    --选择\"在两个sql数据库之间复制对象和数据\"
    --把\"包含扩展属性\"选上,其他的根据需要选择
    --最后完成 
      

  13.   

    无法恢复.用winhex找不到 5556aaaa 的所在. 偏移量0x00004000处不是这个.
      

  14.   

    修复好了 下载地址   http://www.db-recovery.com/wp-content/uploads/2009/04/lxmk2008_data.rar你查下    是否 还有缺失的表  。
      

  15.   

    你这种问题,上网找个软件叫DBRECOVER就可以搞定,也不用求人,也不用花钱的。很多搞数据恢复的公司都是用这个软件。要是这个软件不好用,我再告诉你一个的软件,肯定好用。