MS SqL2000 數據庫置疑狀態的解決方法[轉]

數據庫進行修復                                 
sp_configure 'allow updates',1
reconfigure with override
update sysdatabases set status=32768 where name='CotBase12009'

sp_dboption 'CotBase12009','Single user','true'

dbcc checkdb('CotBase12009')
update sysdatabases set status=28 where name='CotBase12009'
sp_configure 'allow updates',0
reconfigure with override
sp_dboption 'CotBase12009','single user','False'

sql2000中MSDB數據庫置疑狀態的解決方法
問題:我的SQL Server 2000的MSDB數據庫,因爲不正常關機,造成了置疑狀態,請問採用什麼方法能夠彌補?
解決方法一:你可以採用以下的代碼進行修復:
  
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1
RECONFIGURE WITH OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='msdb'
Go
sp_dboption 'msdb', 'single user', 'true'
Go
DBCC CHECKDB('msdb')
Go
update sysdatabases set status =28 where name='msdb'
Go
sp_configure 'allow updates', 0
reconfigure with override
Go
sp_dboption 'msdb', 'single user', 'false'
Go

解決方法二:
MSDB數據庫解決過程
難點:由於MSDB數據庫不能刪除,將其文件拷出來,再次附加數據庫,但新的附加數據庫不能叫MSDB,也就是不能同名,遇到了困難。
1:先停止整個數據庫,將該數據庫的文件msdbdata.mdf和msdblog.ldf拷貝粘貼出來到另一個目錄下。
2:將以上的文件再拷貝到另一個目錄下,也就是說複製兩次。
3:選擇 數據庫右擊鼠標 --》所有任務--》附加數據庫 將複製出的一個備份文件附加上去,其中,數據庫名稱叫MSDB1,用戶是SA或ADMINISTRATOR。
4:將MSDB1數據庫備份,備份成一個文件,當時我的叫MSDB。BAK。
5:選擇置疑的數據庫MSDB,選擇恢復數據庫,將剛纔備份出來的數據庫強行恢復到MSDB。
6:問題解決,MSDB庫又能正常使用。
完成後趕快將數據庫再次備份一次。呵呵。
另附:數據庫置疑解決辦法
第一次遇到數據庫質疑這樣的問題,把我給嚇壞了,重要數據啊~~大家知道爲什麼會發生這種情況麼?是不是不正常關機的情況下會發生這種情況?
還有,現在修復好了,但昨天的數據丟失了,以前的數據倒還在。難道昨天發生了什麼異常情況?
我這裏一篇解決數據庫質疑的文檔,提供給大家,日後備用:
SQL SERVER數據庫置疑後恢復步驟

1. 恢復步驟:
a.將smlog_log.ldf文件備份到其它目錄下;
b.將源目錄下的smlog_log.ldf文件改名爲smlog_log_bak.ldf;
c.執行以下語句修改數據庫的狀態:
use Master
go
update sysdatabases set status=32768 where name=’數據庫名稱’ --修改狀態
go
shutdown with nowait --停止數據庫服務器
go
d.退出SQL並在命令行模式中通過下面的代碼重新啓動SQL:
sqlservr -c -T3608 -T4022 --安全模式啓動SQL SERVER
e.在查詢分析器中執行以下語句來查看剛剛修改過狀態的數據庫狀態:
select Name,Status from sysdatabases where Name=’ 數據庫名稱’
f.執行以下代碼新建日誌文件:
dbcc traceon(3604) --跟蹤
dbcc rebuild_log(‘數據庫名稱’,’日誌文件名稱’) --文件名要有全路徑和擴展名
g.將數據庫置回正常狀態:
update sysdatabases set status=0 where name=’數據庫名稱’
h.重新啓動數據庫後執行以下語句檢查數據庫:
DBCC CHECKDB --如果執行完有錯誤用以下語句修復
i.要修復數據庫必需將數據庫改爲單用戶模式:
Exce sp_dboption ‘數據庫名稱’,’single user’,’true’(‘false’恢復多用戶)
j.執行以下語句修復數據庫:
DBCC CHECKDB(‘數據庫名稱’,REPAIR_ALLOW_DATA_LOSS)
REPAIR_ALLOW_DATA_LOSS:是比較高級的修復方式
REPAIR_FAST:是簡單快速的修復方式  

相似問題:系統重裝,忘記了備份SQL,然後又通過數據恢復工具找回了mcdb_data.mdf 和mcdb_Log.LDF,在企業管理器上用附加數據庫時提示錯誤9004,日誌錯誤,在網上找了諸多方法,也試過建個同名空數據庫然後停止SQL SERVER然後覆蓋掉MDF。但多不行,哪個大哥救救
這是詳細步驟.
1.先建一個與你要恢復的數據庫名稱一樣的數據庫。
2.停止sql server,把你的數據庫替換這個數據庫。
3.重啓sql server,把數據庫設置爲緊急狀態。
sp_configure 'allow',1
reconfigure with overirde
update sysdatabases set status=32768 where name='yourdata'
4.重建日誌文件。
dbcc rebuild_log('yourdata','your data path\newdata_log.ldf')
5.取消緊急模式。
update sysdatabases set status=0 where name='yourdata'
restore sysdatabases yourdata with recovery
sp_configure 'allow',0
reconfigure with override
6.重起sql server
7.ok

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章