永发信息网

紧急求助,SQL2000数据库处于质疑状态

答案:2  悬赏:30  手机版
解决时间 2021-02-13 14:46
紧急求助,SQL2000数据库处于质疑状态
最佳答案
在MS 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的所在目录的权限.

灵验脚本
遇到这种数据库置疑情况,就运行下面这个脚本,屡试不爽:
======================================================
--before running any script, run the following to set the
master database to allow updates
USE master
GO
sp_configure 'allow updates', 1
GO
RECONFIGURE WITH OVERRIDE
GO

--Run the following script
UPDATE master..sysdatabases SET status = status ^ 256
WHERe name = 'Database_Name'

--Run the following script
exec SP_resetstatus Database_Name

--stop and start the MSDTC at this stage

--After the procedure is created, immediately disable
updates to the system tables:
exec sp_configure 'allow updates', 0
GO
RECONFIGURE WITH OVERRIDE
GO
全部回答
原因:非正常程序中断或错误结束sql服务,都会导致msdb数据库被“置疑”。 msdb 数据库供sqlserver 代理程序调度警报和作业以及记录操作员时使用。比如,我们备份了一个数据库,会在表backupfile中插入一条记录,以记录相关的备份信息。 但因为msdb数据库并未存储特别重要的信息,因此可以从别的机器拷贝一份相同的msdbdata.mdf和msdblog.ldf覆盖掉即可。 解决步骤 a服务器为被“置疑”的服务器;b服务器上装有和a服务器相同版本的数据库软件。版本是sql server 2000。 步骤1、停止b服务器上的sql server 服务,拷贝“msdbdata.mdf”和“msdblog.ldf”文件。 步骤2、停止a服务器上的sql server 服务,将从b服务器上拷贝“msdbdata.mdf”和“msdblog.ldf”文件覆盖掉a服务器上的这两个文件。  步骤3、重新启动a服务器上的sql server服务。 步骤4、如果msdb数据库仍然是置疑状态,可以执行下面的sql。 use master  go  sp_configure 'allow updates',1 reconfigure with override  go  update sysdatabases set status =32768 where name='msdb'  go  sp_dboption 'msdb', 'single user', 'true'  go  dbcc checkdb('msdb')  go  update sysdatabases set status =28 where name='msdb'  go  sp_configure 'allow updates', 0 reconfigure with override  go  sp_dboption 'msdb', 'single user', 'false'  go
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我才不愿意吃苦,即使要吃苦我也要想办法避免
晓华五金交电建材(一环路西段)地址好找么,我
2008年5月以来,国际金融危机蔓延,国内经济
口臭去医院要挂什么科?
求单片微型计算机原理 邹丽新主编 课后习题答
从上海虹桥机场到昆山花桥镇花桥国际商务城兆
王蒙还有可能再参加比赛吗?她是老将快退役了
顺发五金店地址在什么地方,我要处理点事
大西北拉面地址在什么地方,想过去办事
已知函数f(x)=log1/2[sin(x-π/4)]的绝对
一般长途汽车票 能提前几天预定?
安徽省华胜电缆有限公司在哪里啊,我有事要去
老师让我们模拟论文答辩,以小组为单位,每组
忠诚五金建材地址在什么地方,我要处理点事
VaR代表的是在市场波动下,某一金融资产或证
推荐资讯
古冶区唐山赵各庄清真羊汤烧烤涮在什么地方啊
叶片正面和背面的气孔一样多。对错
支付宝实名验证怎么注销掉 我绑定了别人的身
中国联通(秭归心动营业厅)地址在哪,我要去那
判定一个电路是否有放大作用的依据是什么?
背光板坏了的原因,各位车友有了解这个问题吗
蒲公英韩式餐馆在哪里啊,我有事要去这个地方
辛记馍香吉泰店地址在哪,我要去那里办事
国际经济法名词解释平安险
呱叽呱叽 什么意思
如家公寓(丽水松阳县)地址在哪,我要去那里办
百度我家母貉子不爱吃食还发蔫怎么办
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?