dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
dbcc checkdb(@databasename,REPAIR_REBUILD)
dbcc checktable('需要修復的資料表的名稱',REPAIR_ALLOW_DATA_LOSS)
dbcc checktable('需要修復的資料表的名稱',REPAIR_REBUILD)
3. 其他的一些常用的修復命令
DBCC DBREINDEX 重建指定資料庫中表的一個或多個索引
用法:DBCC DBREINDEX (表名,'') 修復此表所有的索引。
重要事項:
- 最好不要使用這些 REPAIR 選項。
- 若要修復錯誤,我們建議您從備份中還原。
- 修復作業並不考慮資料表或資料表之間的任何條件約束。
- 如果指定的資料表涉及一或多項條件約束,建議您在修復作業之後,執行 DBCC CHECKCONSTRAINTS。
- 如果您必須使用 REPAIR,請執行不含修復選項的 DBCC CHECKDB 來尋找要使用的修復層級。
- 如果您使用 REPAIR_ALLOW_DATA_LOSS 層級,建議您在搭配這個選項執行 DBCC CHECKDB 之前,先備份資料庫。
-- 由於資料庫狀態為 Suspect ,所以可以透過將資料庫切換成 Emergency,讓資料庫可以進行唯讀存取與修復。
Use master
go
Alter database cary_db set emergency
go
-- 由於需要進行資料庫修復,所以先將資料庫切換成單人模式。
Alter database cary_db set single_user
go
-- 再來就是透過checkdb來進行資料庫修復,在參數上有兩種常用的方法,建議大家可以先用 [REPAIR_REBUILD] 指令來修復,如果執行完成後仍然有錯時,才會使用[REPAIR_ALLOW_DATA_LOSS] 的指令來執行,因為此指令可能會造成資料的遺失,所以千萬注意,而執行完成後,需確認是否有錯誤訊息顯示。
DBCC checkdb(cary_db , REPAIR_ALLOW_DATA_LOSS)
DBCC checkdb(cary_db ,REPAIR_REBUILD )
go
-- 由於已修復完成,所以將資料庫的狀態切回原本的正常狀態。
Alter DATABASE cary_db SET ONLINE
go
-- 再將資料庫切換回多人使用模式
Alter DATABASE cary_db SET multi_user
go
沒有留言:
張貼留言