天天看点

SQL Server 2000报错“SUSPECT-可疑“的处理过程

一、问题描述

    连接数据库(HBNX_MCC_DEV和HBNX_MCC_UAT)时,报错“SUSPECT”(数据库“可疑”,外界无法使用)。

二、问题原因

    服务器意外down机,导致有连接未断开的数据库状态变为“可疑”。

三、问题解决

    由于没有前一天的备份文件,所以需要找回数据库的数据!

    1、开通系统表修改权限

        sp_configure 'allow updates', 1;

        reconfigure with override;

    2、将数据库状态设置为-32768(只读\脱机\紧急模式)

        update sysdatabases set status = -32768 where name in ('HBNX_MCC_DEV','HBNX_MCC_UAT')

    3、新建数据库HBNX_MCC_DEV_20190121和HBNX_MCC_UAT_20190121

    4、找一份原来的备份文件,进行数据库还原(获取表结构、索引、触发器和存储过程等)

        --在HBNX_MCC_DEV_20190121上使用HBNX_MCC_DEV的老备份文件进行还原操作

        --在HBNX_MCC_UAT_20190121上使用HBNX_MCC_UAT的老备份文件进行还原操作

    5、只读模式下无法备份,可以使用“DTS导出”数据,但是DTS不能导出索引、触发器和存储过程等,所以有上一步的还原操作

        --使用DTS将HBNX_MCC_DEV中的数据导出到HBNX_MCC_DEV_20190121

        --使用DTS将HBNX_MCC_UAT中的数据导出到HBNX_MCC_UAT_20190121

    6、恢复原数据库状态(将出问题的数据库状态改为0-正常,如果一直处于“紧急模式”,可能会对其他数据库操作有影响)

        update sysdatabases set status = 0 where name in ('HBNX_MCC_DEV','HBNX_MCC_UAT')

    7、关闭系统表修改权限

        sp_configure 'allow updates', 0;

        reconfigure with override;

四、附录

    1、查询数据库当前状态参数

        select * from sysdatabases where name = 'HBNX_MCC_DEV'

    2、检查并处理数据库1

        dbcc checkdb('HBNX_MCC_DEV')

    3、检查并处理数据库2

        dbcc checkalloc('HBNX_MCC_DEV')