標籤:
資料庫出現置疑、可疑、離線、單使用者、緊急模式主要是因為資料庫的記錄檔除了問題,2000和2008修複方式不一樣,2008的修複指令碼在2000中不適用,主要是不被2000識別。
假設資料庫名為:eisdoc:
sqlserver2000資料庫置疑的處理方式:
1.設定資料庫允許直接作業系統表。
此操作可以在SQL Server Enterprise Manager裡面選擇資料庫伺服器,按右鍵,選擇“屬性”,在“伺服器設定”頁面中將“允許對系統目錄直接修改”一項選中。
2.設定eisdoc為緊急修複模式
update sysdatabases set status=-32768 where dbid=DB_ID(‘eisdoc‘) 關閉開啟企業管理器,此時可以在SQL Server Enterprise Manager裡面看到該資料庫處於“唯讀\置疑\離線\緊急模式”可以看到資料庫裡面的表,但是僅僅有系統資料表
3.重建資料庫記錄檔
dbcc rebuild_log(‘eisdoc‘,‘E:\Microsoft SQL Server\Data\eisdoc_log.ldf‘) 執行過程中,如果遇到下列提示資訊: 伺服器: 訊息 5030,層級 16,狀態 1,行 1 未能排它地鎖定資料庫以執行該操作。 DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。 說明您的其他程式正在使用該資料庫,如果剛才您在F步驟中使用SQL Server Enterprise Manager開啟了eisdoc庫的系統資料表,那麼退出SQL Server Enterprise Manager就可以了。(關閉企業管理器,如果別的機器從網路訪問資料庫,也把網路關閉) 正確執行完成的提示應該類似於: 警告: 資料庫 ‘eisdoc‘ 的日誌已重建。已失去事務的一致性。應運行 DBCC CHECKDB 以驗證物理一致性。將必須重設資料庫選項,並且可能需要刪除多餘的記錄檔。 DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。 此時開啟在SQL Server Enterprise Manager裡面會看到資料庫的狀態為“只供DBO使用”。此時可以訪問資料庫裡面的使用者表了。
4.驗證資料庫一致性(可省略)
dbcc checkdb(‘iBusinessWork‘) 一般執行結果如下: CHECKDB 發現了 0 個分配錯誤和 0 個一致性錯誤(在資料庫 ‘eisdoc‘ 中)。 DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。
5.設定資料庫為正常狀態
sp_dboption ‘eisdoc‘,‘dbo use only‘,‘false‘ 如果沒有出錯,那麼現在就可以正常的使用恢複後的資料庫啦。
6.關閉“允許對系統目錄直接修改”一項。
因為平時直接作業系統表是一件比較危險的事情。當然,我們可以在SQL Server Enterprise Manager裡面恢複。
sqlserver2008資料庫可疑檔案的修複方式:
1.設定資料庫狀態,指令碼:EXEC sp_resetstatus ‘eisdoc‘
2.設定資料庫為緊急模式,指令碼:ALTER DATABASE eisdoc SET EMERGENCY
3.設定資料庫為單一使用者模式(對資料庫檢查修複只能在單一使用者模式下),指令碼:ALTER DATABASE eisdoc SET SINGLE_USER
4.檢查並修複資料庫,會提示你修複資料庫可能遺失資料,正常應該不會遺失資料庫資料,但是資料庫日誌的完整性將受到破壞,指令碼:DBCC CheckDB (eisdoc, REPAIR_ALLOW_DATA_LOSS)
5.恢複資料庫為多使用者模式,指令碼:ALTER DATABASE eisdoc SET MULTI_USER
-- 恢複資料庫狀態
ALTER
DATABASE
dbName
SET
ONLINE
以上五步即可修複sqlserver2008中的可疑檔案
原文連結:http://blog.sina.com.cn/s/blog_61feb2110101e2ez.html
SQLSERVER資料庫置疑、可疑、離線、單使用者、緊急模式等的修複