数据库置疑的处理办法 
在MS   SQLSERVER中一直有这样的问题,SQLSERVER的状态"置疑",我们先来分析一下SQLSERVER数据库"置疑"的原因:   
        1.错误的删除日志;   
        2.硬件(HD)损坏,造成日志和数据文件写错误;   
        3.硬盘的空间不够,比如日志文件过大;   
    
    
  解决办法:   
    
  这是最简单的办法是有数据库的全备份,然后恢复即可.   
  步骤:   
    
  1.   删除原始的数据库:   
            USE   MASTER   
            GO     
            DROP   DATABASE   DB_SUEPECT     
            
    
  2.建立同名的数据库:   
                  USE   master   
                GO   
                CREATE   DATABASE   DB_SUSPECT   
                  ON     
                    (   NAME   =   DBNAME_DAT,   
                        FILENAME   =   'C:',   
                        SIZE   =   10,   
                          FILEGROWTH   =   5   )   
                        LOG   ON   
                      (   NAME   =   'DBNAME_LOG',   
                        FILENAME   =   'g:',   
                        SIZE   =   5MB,   
                        FILEGROWTH   =   5MB   )   
                        GO   
            
    
  3.恢复数据库:   
              RESTORE   DATABASE   DB_SUSPECT   
            FROM   DBNAME_BACKUP.DAT   
        
    
  4.数据库完整性检测:   
                DBCC   CHECKDB('DB_SUSPECT')   
    
  5.重新启动MSSQLSERVER服务.   
    
  如果没有全备份,那就要用一些特殊的方法:   
    
  1.设置数据库为紧急模式   
                Use   Master   
                GO   
                sp_configure   'allow   updates',   1   
                reconfigure   with   override   
              GO   
              UPDATE   sysdatabases   SET   status   =   32768   where   name   =   'DB_SUSPECT'   
              GO   
    
  2.停掉SQL   Server服务:   
            NET   STOP   MSSQLSERVER   
    
  3.把原始数据库的数据文件DBNAME_DAT.MDF,DBNAME_LOG.LDF移走:   
    
  4.启动SQL   Server服务:   
              NET   START   MSSQLSERVER   
    
  5.重新建立一个同名的数据库DB_SUSPECT;   
    
                USE   master   
                GO   
                CREATE   DATABASE   DB_SUSPECT   
                  ON     
                    (   NAME   =   DBNAME_DAT,   
                        FILENAME   =   'C:',   
                        SIZE   =   10,   
                          FILEGROWTH   =   5   )   
                        LOG   ON   
                      (   NAME   =   'DBNAME_LOG',   
                        FILENAME   =   'g:',   
                        SIZE   =   5MB,   
                        FILEGROWTH   =   5MB   )   
                        GO   
    
    
  6.设置数据库运行在单用户的模式:   
                    USE   MASTER   
                  GO   
                  ALTER   DATABASE   DB_SUSPECT   SET   SINGLE_USER   
                  GO   
    
  7.停掉SQL服务:   
            NET   STOP   MSSQLSERVER   
    
  8.把原来的数据文件再覆盖回来:   
    
    
  9.启动SQL   Server服务:   
              NET   START   MSSQLSERVER   
    
  10.重新设置SQLSERVER的状态:   
                    USE   MASTER   
                  GO   
                  EXEC   sp_resetstatus   "DB_SUSPECT"   
    
  11.数据库完整性检测:   
                  DBCC   CHECKDB('DB_SUSPECT')   
    
  12.恢复数据库为多用户模式:   
                  USE   MASTER   
                  GO   
                  ALTER   DATABASE   DB_SUSPECT   SET   MULTI_USER   
                GO   
    
  13.恢复SQLSERVER原始的配置:   
              USE   MATER   
    
          GO               
    
          UPDATE   sysdatabases   SET   status   =   4194320   where   name   =   'DB_SUSPECT'   
          GO   
    
  14.配置SQLSERVER不允许更新系统表:   
              USE   MASTER   
            GO   
              sp_configure   'allow   updates',   0   
              reconfigure   with   override   
            GO   
    
  15.重新启动MSSQLSERVER服务:   
    
            最好重新启动操作系统   
    
  16.备份数据库:   
    
        可以通过SQLSERVER企业管理器或T-SQL.需要备份MASTER和DB_SUSPECT   
  补充一点,如果用DOMAIN\USER时,要注意对.MDF.LDF的所在目录的权限.   

解决方案 »

  1.   

    查询分析器中执行如下程序即可USE MASTER
    GOSP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
    GOUPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='你的数据库名'
    Gosp_dboption '你的数据库名', 'single user', 'true'
    GoDBCC CHECKDB('你的数据库名') 
    Goupdate sysdatabases set status =28 where name='你的数据库名'
    Gosp_configure 'allow updates', 0 reconfigure with override
    Go sp_dboption '你的数据库名', 'single user', 'false'
    Go