sql2000数据库置疑(SQL2000数据库突然置疑 这是什么原因造成的 我先介绍下现象。)
各位老铁们好,相信很多人对sql2000数据库置疑都不是特别的了解,因此呢,今天就来为大家分享下关于sql2000数据库置疑以及SQL2000数据库突然置疑 这是什么原因造成的 我先介绍下现象。的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
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 2000 数据库置疑的解决方法
网上各种方法都用了没成功
我来介绍下我的方法吧可能你的情况与我一样
我SQL2000安装在C盘,数据库文件在D盘。
企业管理器无法删除,分离。
我就把D盘文件拷贝到,C:\Program Files\MSQL\DATA\放这里。这里全是数据库系统库,具体路径请根据自己情况。
然后重启服务-附加就好了。
之后再分离,再把C盘的数据库源文件剪切走粘贴到非C盘,再重新附加即可。
如果有用请怒赞!谢谢
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步即可。这个方法绝对好用。
如果你还想了解更多这方面的信息,记得收藏关注本站。