当前位置:首页 » 编程语言 » sqlserver2000置疑
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sqlserver2000置疑

发布时间: 2022-06-07 17:33:32

sql2000数据库msdb质疑怎么处理

原因:非正常程序中断或错误结束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。

USEMASTER
GO
SP_CONFIGURE'ALLOWUPDATES',1RECONFIGUREWITHOVERRIDE
GO
UPDATESYSDATABASESSETSTATUS=32768WHERENAME='msdb'
Go
sp_dboption'msdb','singleuser','true'
Go
DBCCCHECKDB('msdb')
Go
updatesysdatabasessetstatus=28wherename='msdb'
Go
sp_configure'allowupdates',0reconfigurewithoverride
Go
sp_dboption'msdb','singleuser','false'
Go

❷ sql2000数据库经常置疑怎么处理

修复数据库前,请做好相关备份。最好不要前后台相连,以免造成不必要的数据丢失。我们以名为“kspos”的数据库为例。1.首先把服务管理器先停止,把原来置疑的数据库下的两个文件拷贝出来,
启动服务管理器,在企业管理器中删除该数据库,然后建立一个同名的数
据库。停止服务管理器,把置疑的数据库文件拷贝进去覆盖。2.运行中输入“isqlw”,打开查询分析器。3.输入语句USE
MASTER
GOSP_CONFIGURE
'ALLOW
UPDATES',1
RECONFIGURE
WITH
OVERRIDE
GOUPDATE
SYSDATABASES
SET
STATUS
=-32768
WHERE
NAME='kspos'
Go使数据库处于紧急修复模式4.输入语句:use
kspos

go

dbcc
checkdb
('kspos')
此语句作用在于查询数据库的损坏状况。5.删除原来的日志文件,重新建立新的日志文件。

DBCC
REBUILD_LOG
('kspos','D:\Program
Files\Microsoft
SQL
Server\MSSQL\Data\bw9kyy_01_Log.LDF'
)6.右击kspos数据库\属性\选项\选择单用户。7.修复
dbcc
checkdb
('kspos',REPAIR_ALLOW_DATA_LOSS)
REPAIR_ALLOW_DATA_LOSS
执行由
REPAIR_REBUILD
完成的所有修复,包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,以及删除已损坏的文本对象。这些修复可能会导致一些数据丢失。修复操作可以在用户事务下完成以允许用户回滚所做的更改。如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。修复完成后,备份数据库。
REPAIR_FAST
进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。这些修复可以很快完成,并且不会有丢失数据的危险。
REPAIR_REBUILD
执行由
REPAIR_FAST
完成的所有修复,包括需要较长时间的修复(如重建索引)。执行这些修复时不会有丢失数据的危险。
8.关闭单用户模式,在企业管理器中直接右击kspos\属性\选项,把前面的对
勾去掉即可。

然后在查询分析器中执行如下语句:
USE
MASTER

GO
SP_CONFIGURE
'ALLOW
UPDATES',0
RECONFIGURE
WITH
OVERRIDE

GO

到此修复工程完毕。注:一般此修复步骤需要5-8次,只需执行第7步即可。 这个方法绝对好用。

❸ 如何解决SQL Server数据库置疑问题

您好,是这样的:
1.首先确认已经备份了.mdf和.ldf文件。
2. 在SQL Server中新建一个同名的数据库,然后停止SQL Server服务。

3. 用原有的.mdf和.ldf文件覆盖新建数据库对应的.mdf和.ldf文件。
4. 重新启动SQL Server服务,这是应该会看到这个数据库处于置疑(Suspect)状态。
5. 在SQL查询分析器中执行以下命令,以允许更新系统表:use mastergosp_configure "allow updates",1reconfigurewithoverridego。
6. 将这个数据库置为紧急模式:update sysdatabases set status = 32768 where name="db_name"go。
7. 使用DBCC CHECKDB命令检查数据库中的错误:DBCC CHECKDB("db_name")GO。
8. 如果DBCC CHECKDB命令失败,请转至第10步,否则先将数据库置为单用户模式,再尝试对其进行修复:sp_dboption "db_name","single
user","true"DBCCCHECKDB("db_name",REPAIR_ALLOW_DATA_LOSS)GO
如果在执行DBCCCHECKDB("db_name",REPAIR_ALLOW_DATA_LOSS)命令时提示说数据库未处于单用户模式状态的话,则重新启动SQLServer服务,然后继续尝试。
9. 如果DBCCCHECKDB("db_name",REPAIR_ALLOW_DATA_LOSS)命令失败,请转至第10步,否则若成功修复了数据库中的错误:
重新执行DBCC CHECKDB("db_name")命令,确认数据库中已没有错误存在。
清除数据库的置疑状态:sp_resetstatus "db_name"
清除数据库的单用户模式状态:sp_dboption "db_name","single user","false"
重新启动SQL Server服务,如果一切正常的话,则数据库已经成功恢复。
10.如果以上步骤都不能解决问题的话,请参考附件中的文档尝试通过重建事务日志来恢复数据库中的数据。如果您只有MDF文件,问题就更加复杂一些,我们需要直接重建事务日志了:
1. 在SQL Server中新建一个同名的数据库,然后停止SQL Server服务。
2. 用原有的ldf文件覆盖新建数据库对应的.mdf文件,将其日志文件(.ldf)删除。
3. 启动SQL Server服务,并将数据库置为紧急模式(同上: 步骤5和步骤6)。
4. 停止并重新启动SQL Server服务。
5. 执行以下命令重建数据库日志文件:(下面是个示例,您要用您实际的数据库名)
DBCC REBUILD_LOG("cas_db", "D:\cas_db\cas_db_Log.LDF")
6. 重新将该数据库置为单用户模式。
7. 再次尝试使用DBCC CHECKTABLE或DBCC CHECKDB命令检查并修复数据库中。

❹ sql server2000附加数据出现wxywt21(置疑)

数据库被质疑,可以使用以下语句进行修复。前题是你的数据库文件必须真实存在,不能被误删除。
--修复数据库DBCC
ALTER DATABASE test SET EMERGENCY
ALTER DATABASE test SET SINGLE_USER
DBCC CHECKDB(test,REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE test SET MULTI_USER
ALTER DATABASE test SET ONLINE
--如果检测到某个表读取不了数据还可以check一下表
USE test
DBCC CHECKTABLE(nihao)

❺ SQL server2000中的MSDB数据库置疑,网上的很多方法都试过,但是都解决不了!

那你的数据将变成msdb数据库备份中的数据,如果你自己的数据库中有含不一样的数据,也就会消失

❻ sql数据库置疑怎么处理

修复方法

  • 1

    打开SQL企业管理器

    按序打开 ,开始--所有程序(或程序)--Microsoft SQL Server--企业管理器

    打开后按序点+号展开直到数据库

❼ 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 procere is created, immediately disable
updates to the system tables:
exec sp_configure 'allow updates', 0
GO
RECONFIGURE WITH OVERRIDE
GO

❽ 在sql server 2000中经常会遇到数据库置疑,我想问下怎么解决置疑恢复问题。不是用备份还原的那些

首先数据库置疑是复杂的,原因有多种一般是因为数据文件损坏,硬盘或者有坏道,或者是因为数据字典内容损坏,日志损坏等,必须要有针对性的恢复。最简单的就是日志文件损坏的恢复,可以通过重新创建日志的方法恢复。要是其他问题,还没有备份的话就必须建一个空数据库,用sqlseever的命令和sql将数据迁入新库中(即使这样,也未必能保证不丢失数据),像你说的通过鼠标点一下的操作就将数据库恢复的方法现在还没有!!
1 数据库属性,设置中,允许对系统目录直接修改(Allow modifications to be made directly to the system catalogs) 选中
2 update sysdatabases set status=32768 where name='数据库名称'
这条语句执行之后就可以对数据库进行读取了!!!!
3 进入查询分析器 创建一个新数据库
4 在质疑数据库中 运行下面语句
select 'select * into 新数据名称..'+rtrim(name)+' from '+name from
sysobjects where xtype='u' order by name
5 将第四步运行结果复制到新数据库中执行!!!
这个方法是可以解决大部分数据库置疑问题的!

❾ sql server2000数据库怎么会变成脱机状态还有置疑状态,有这两个状态后查不到数据,什么情况下会出现

是在sql服务启动之前,数据库文件移动或更名造成的。
备份好数据库文件,然后刷新或删除,然后重新附加就可以了。

❿ sql2000 置疑

按照SQLSERVER帮助文件里的方法处理。。。

假设数据库为TEST:
按以下步骤执行 A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。
B.停掉数据库服务器。
C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。
D.启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。
E.设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
F.设置test为紧急修复模式
update sysdatabases set status=-32768 where dbid=DB_ID('test')
此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表
G.下面执行真正的恢复操作,重建数据库日志文件
dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')
执行过程中,如果遇到下列提示信息:
服务器: 消息 5030,级别 16,状态 1,行 1
未能排它地锁定数据库以执行该操作。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。
正确执行完成的提示应该类似于:
警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。
H.验证数据库一致性(可省略)
dbcc checkdb('test')
一般执行结果如下:
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'test' 中)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
I.设置数据库为正常状态
sp_dboption 'test','dbo use only','false'
如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。
J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成
sp_configure 'allow updates',0
go
reconfigure with override
go