新聞速報

        

2014年3月25日 星期二

MS SQL Server 資料修復命令

1. DBCC CHECKDB
dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)

dbcc checkdb(@databasename,REPAIR_REBUILD)
 
 2. DBCC CHECKTABLE
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

沒有留言:

張貼留言