如何修复数据库状态

数据|数据库

HOW TO FIX SQLSERVER DATABASE SUSPECT?
如何修复数据库状态"置疑"?

**********************************************************

Author:黄山光明顶

mail:leimin@jxfw.com

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

时间: 2024-10-14 18:22:21

如何修复数据库状态的相关文章

MS SQL 数据库状态为SUSPECT的处理方法

当SQL SERVER数据库状态为质疑(SUSPECT)状态时,我们可以用以下方法来处理: 1. 修改数据库为紧急模式:ALTER DATABASE DBName SET EMERGENCY . 2. 检查数据库的完整性:DBCC  CHECKDB('DBName') 3. 检查没有错误则恢复数据库为正常模式:ALTER DATABASE  DBName SET ONLINE; 4  如检查数据库有错误则修改数据库为单用户模式,依情况选择以下命令行进行修复数据; Code Snippet DBC

MSSql使用DBCC CHECKDB修复数据库或表

MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令. 1. DBCC CHECKDB 重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误. use master declare @databasehttp://www.aliyun.com/zixun/aggregation/11696.html">name varchar(255) set @data

详解SQL Server数据库状态和文件状态

数据库状态 (database states) 查询数据库的当前状态 : 1.查询所有数据库的状态 ,通过sys.databases目录视图的state_desc列 user master go select state_desc ,[name] from sys.databases go 2.查询指定数据库的状态,通过DATABASEPROPERTYEX函数的Status属性 select DATABASEPROPERTYEX('demoData','status') go 状态: ONLIN

3大原因:为何要在迁移云端前修复数据库?

现在,许多企业都将数据迁移到了云端,数据迁移做的好坏直接影响到企业以后的发展,但是有很多公司并不完全了解数据迁移前的准备工作.对于一些主流的数据库,无论是在本地还是云端,都可以轻松的使用.移动和升级.但对于一个本地就存在问题的数据库,迁移到云端,相同的问题还是会出现.所以有问题的数据库必须在迁移到云端之前进行修复. 原因一:有问题的数据库迁移到云端依然存在问题 如果你的本地系统中有一个故障数据库,不要把它迁移到云端.因为即使迁移到云端,它还是不能修复故障. 解决这个问题的办法是,重新对本地数据库

2. SQL Server数据库状态监控 - 错误日志

原文:2. SQL Server数据库状态监控 - 错误日志 无论是操作系统 (Unix 或者Windows),还是应用程序 (Web 服务,数据库系统等等) ,通常都有自身的日志机制,以便故障时追溯现场及原因.Windows Event Log和 SQL Server Error Log就是这样的日志, PS: SQL Server 中的错误日志 (Error Log) 类似于 Oracle中的alert 文件. 一. 错误日志简介 1. Windows事件日志与SQL Server 错误日志

3. SQL Server数据库状态监控 - 可用空间

原文:3. SQL Server数据库状态监控 - 可用空间 数据库用来存放数据,那么肯定需要存储空间,所以对磁盘空间的监视自然就很有必要了. 一. 磁盘可用空间 1. 操作系统命令或脚本.接口或工具 (1) DOS命令: fsutil volume diskfree C:\windows\system32>fsutil volume diskfree C: Total # of free bytes        : 9789493248 Total # of bytes           

mysql 修复数据库实例

mysql教程 修复数据库教程实例 Alter DATABASE [dvbbs] SET SINGLE_USER GO DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK GO Alter DATABASE [dvbbs] SET MULTI_USER GO   使用php教程myadmin修复的过程中造成了原有数据全部丢失.在把备份恢复后,使用了myisamchk来进行修复.最后数据库修复成功 www# myisamchk -r

4. SQL Server数据库状态监控 - 作业状态

原文:4. SQL Server数据库状态监控 - 作业状态 有很多地方可以设置定时任务,比如:Windows的计划任务,Linux下的crontab,各种开发工具里的timer组件.SQL Server也有它的定时任务组件 SQL Server Agent,基于它可以方便的部署各种数据库相关的作业(job). 一. 作业历史纪录 作业的历史纪录按时间采用FIFO原则,当累积的作业历史纪录达到上限时,就会删除最老的纪录. 1. 作业历史纪录数配置 所有作业总计纪录条数默认为1000,最多为999

mssql 压缩数据库 检查备份集 修复数据库 sql语句

mssql 压缩数据库教程 检查备份集 修复数据库 sql语句 本教程提供了关于mssql server 压缩数据库 检查备份集 修复数据库的sql语句,并且实例说明的操作方法. 3.压缩数据库 dbcc shrinkdatabase(dbname) 4.转移数据库给新用户以已存在用户权限 exec sp_change_users_login 'update_one','newname','oldname' go 5.检查备份集 restore verifyonly from disk='e:d