公司首頁 | 公司產品 | 典型客戶 | 注冊購買 | 軟件下載 | 解決方案 | 在線服務 | 關于彙笨 | 簡體中文
  網站首頁 >> 問題解答
sql2000中MSDB數據庫置疑狀態的解決方法

作者:昆明阿笨科技 時間:2008-10-17 14:05:56 點此數:9166

問題:我的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

 
 相關文件

昆明彙笨科技有限公司  版權所有 電話: (86) 0871-68314379
KUNMING HB TECHNOLOGY CO.,LTD 地址:昆明市高新區昌源中路假日城市15-2-201
業務聯系QQ:402400784、15524227  MSN:absoft@msn.cn E_Mail: abmsoft@163.com

滇ICP備08001596號-1