首页 > 开发 > 综合 > 正文

如何修复数据库状态

2024-07-21 02:11:20
字体:
来源:转载
供稿:网友

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
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表