how to fix sqlserver database suspect?
如何修复数据库状态"置疑"?
**********************************************************
author:黄山光明顶
mail:[email protected]
version:1.0.0
date:2004-1-30
(如需转载,请注明出处!,如果有问题请发mail给我:-))
***********************************************************
在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