Sql-Server
“DBCC CHECKDB (databasename, repair)”屬於哪一種修復級別?
MSDN 關於命令“DBCC CHECKDB”的文章在語法部分解釋了執行數據庫修復的三種方法:
- REPAIR_ALLOW_DATA_LOSS - REPAIR_FAST - REPAIR_REBUILD
但是我在尋找如何修復嫌疑人(我在這種模式下執行這些步驟)數據庫時發現了以下語句,我無法理解它是三種模式中的哪一種:
DBCC CHECKDB(數據庫名稱,修復)
我執行了該語句,它工作正常。我很困惑,因為沒有用“_allow_data_loss”、“_fast”或“_rebuild”完成單詞,就沒有單獨引用“repair”參數。
如果我嘗試在緊急狀態下對我的數據庫執行“DBCC CHECKDB ( databaseName , repair_rebuild )”,我會收到一條錯誤消息,指出當數據庫處於緊急狀態時我無法執行該級別的修復。所以,我放棄了“修復”單獨是“repair_rebuild”。
該語句是我發現的腳本中的第三行:
- ALTER DATABASE 數據庫名稱 SET EMERGENCY;
- ALTER DATABASE 數據庫名稱 SET SINGLE_USER;
- DBCC CHECKDB(數據庫名稱,修復)ALL_ERRORMSGS
- ALTER DATABASE 數據庫名稱 SET MULTI_USER;
- ALTER DATABASE 數據庫名稱 SET ONLINE;
如果我閱讀第三條語句執行的輸出,我會看到有關該過程的資訊,但與修復中使用的級別無關。
提前致謝,
在充分損壞的數據庫上執行它會導致以下錯誤消息:
消息 7909,第 20 層,狀態 1,第 1 行
緊急模式修復失敗。您必須從備份中恢復。
這使我估計這
REPAIR
只是REPAIR_ALLOW_DATA_LOSS
. 至少,當涉及到對相關數據庫可恢復性的期望時,我會將其視為相同的。換句話說,這應該被認為是最後手段的操作,只有在其他所有方法都失敗時才能嘗試。確保在執行此過程之前製作數據庫的物理副本。