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