『壹』 SQL server2000中的MSDB資料庫置疑,網上的很多方法都試過,但是都解決不了!
那你的數據將變成msdb資料庫備份中的數據,如果你自己的資料庫中有含不一樣的數據,也就會消失
『貳』 SQL Server 2000 資料庫置凝狀態了,資料庫文件 mdf 是復制的 不能直接附加的!
解決方法一:你可以採用以下的代碼進行修復:
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
『叄』 SQL2000資料庫msdb質疑怎麼處理
原因:非正常程序中斷或錯誤結束SQL服務,都會導致MSDB資料庫被「置疑」。
Msdb 資料庫供SQLServer 代理程序調度警報和作業以及記錄操作員時使用。比如,我們備份了一個資料庫,會在表backupfile中插入一條記錄,以記錄相關的備份信息。
但因為Msdb資料庫並未存儲特別重要的信息,因此可以從別的機器拷貝一份相同的msdbdata.mdf和msdblog.ldf覆蓋掉即可。
解決步驟
A伺服器為被「置疑」的伺服器;B伺服器上裝有和A伺服器相同版本的資料庫軟體。版本是SQL SERVER 2000。
步驟1、停止B伺服器上的SQL SERVER 服務,拷貝「msdbdata.mdf」和「msdblog.ldf」文件。
步驟2、停止A伺服器上的SQL SERVER 服務,將從B伺服器上拷貝「msdbdata.mdf」和「msdblog.ldf」文件覆蓋掉A伺服器上的這兩個文件。
步驟3、重新啟動A伺服器上的SQL SERVER服務。
步驟4、如果MSDB資料庫仍然是置疑狀態,可以執行下面的SQL。
USEMASTER
GO
SP_CONFIGURE'ALLOWUPDATES',1RECONFIGUREWITHOVERRIDE
GO
UPDATESYSDATABASESSETSTATUS=32768WHERENAME='msdb'
Go
sp_dboption'msdb','singleuser','true'
Go
DBCCCHECKDB('msdb')
Go
updatesysdatabasessetstatus=28wherename='msdb'
Go
sp_configure'allowupdates',0reconfigurewithoverride
Go
sp_dboption'msdb','singleuser','false'
Go