how to fix sqlserver database suspect?
如何修复数据库状态"置疑"?
**********************************************************
author:黄山光明顶
mail:[email protected]
version:1.0.0
date:2004-1-30
(如需转载,请注明出处!,如果有问题请发mail给我:-))
***********************************************************
在ms sqlserver中一直有这样的问题,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