备份数据文件,然后按下面的步骤处理: 1新建一个同名的数据库(数据文件与原来的要一致) 2再停掉sql server(注意不要分离数据库) 3用原数据库的数据文件覆盖掉这个新建的数据库 4再重启sql server 5此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名) 6完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用 数据库的脚本创建一个新的数据库,并将数据导进去就行了 USE MASTER GO SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE GO UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名' Go sp_dboption '置疑的数据库名', 'single user', 'true' Go DBCC CHECKDB('置疑的数据库名') Go update sysdatabases set status =28 where name='置疑的数据库名' Go sp_configure 'allow updates', 0 reconfigure with override Go sp_dboption '置疑的数据库名', 'single user', 'false 假设数据库为TEST: 按以下步骤执行 A.设置数据库允许直接 *** 作系统表。此 *** 作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。 use master go sp_configure 'allow updates',1 go reconfigure with override go B.设置test为紧急修复模式 update sysdatabases set status=-32768 where dbid=DB_ID('test') 此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表 C.下面执行真正的恢复 *** 作,重建数据库日志文件 dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_logldf') 执行过程中,如果遇到下列提示信息: 服务器: 消息 5030,级别 16,状态 1,行 1 未能排它地锁定数据库以执行该 *** 作。 DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。 说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。 正确执行完成的提示应该类似于: 警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
找到质疑的数据库文件,重新附加回来就可以。数据库文件名一般格式为ufdata_001_2012这样的 001指帐套号,2012指对应年度数据,根据实际情况查找就可以。 数据文件格式个别小版本会不是这个样子。你可以参照其他没有质疑的数据库文件名称去查找。
在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_BACKUPDAT
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_DATMDF,DBNAME_LOGLDF移走:
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时,要注意对MDFLDF的所在目录的权限
灵验脚本
遇到这种数据库置疑情况,就运行下面这个脚本,屡试不爽:
======================================================
--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 mastersysdatabases 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
畅捷通数据库置疑修复工具使用的具体步骤如下:
1、输入IP数据库账号和密码后点击连接。
2、检测数据,检测数据库当前状态以及是否处于能修复状态。
3、数据分析,工具对当前数据库的状况和损毁状况进行识别。
4、修复数据,置疑/可疑状态修复过程快。
任务管理器中停止sqlserver数据库相关进程,然后去把要设置的数据库的 mdf 和 ldf 文件给移动到其他位置,再开sqlserver企业管理器看到此数据库就显示数据库质疑!~~~
以上就是关于修复SQL2000数据库置疑时出现的错误全部的内容,包括:修复SQL2000数据库置疑时出现的错误、用友u8数据库置疑怎么办、SQL2000数据库突然置疑 这是什么原因造成的 我先介绍下现象。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)