根據系統的報錯信息、系統日志或者應用程序的報錯,懷疑出錯原因是域控制器上的Active Directory,這時可能您最先想到的就是使用Ntdsutil工具的修理功能來修復。但是,我建議您最好把它作為所有可用方法中最后的方案。如果有一個有效的備份,最好使用備份來恢復系統,應該始終把使用備份來恢復作為您首選的方案。
對目錄數據庫使用修復功能并不總是能夠達到預期的結果。比如,如果數據庫文件真的損壞了,即使使用Ntdsutil也是沒有辦法恢復所有的對象和屬性值。實際上,在某些情況下使用修復工具反而會造成更多的數據丟失,所以在嘗試使用這種修復工具之前,注意把這個服務器從網絡中隔離開來,以避免影響到其他域控制器的Active Directory復制。在確認修復后的服務器一切正常以后再連接到網絡中來。
下面以Windows 2003為例來介紹如何使用Ntdsutil修復Active Directory數據庫。
要對數據庫進行修理請按照以下步驟:
(1)打開命令行提示符窗口,輸入下面的命令:
Ntdsutil
(2)當出現Ntdsutil的提示后,輸入下面的命令:
repair
當其他一切的努力都失敗的時候,您可能才會發現從Active Directory的備份中恢復一個Windows 2000域控制器(甚至可以恢復整個Active Directory網絡)才是最有效的。雖然要把Active Directory從一個備份恢復到一個域控制器上不是一件難事,但是在您進行任何恢復之前,需要對網絡體系和邏輯關系仔細考慮。如果在一個網絡中存在一臺以上的Windows 2000 域控制器,Active Directory將不再只存放在一個地方,這是一個非常重要的問題,它直接決定了將來的恢復過程。試著問問自己以下的幾個問題:
是否本地的Active Directory數據庫損壞了,其他復制過的域控制器也損壞了嗎?當一個域控制器從一個好的備份中恢復以后,是否應該覆蓋其他Active Directory中的數據,如果要覆蓋,那么是否會丟失所有修改過的數據(例如新建或刪除的組織單位、修改過的用戶和計算機)?能否只恢復本地的Active Directory從而讓它恢復正常(可能因為數據庫損壞、文件丟失或其他原因造成這臺服務器與其他不一致)?在恢復以后,這臺服務器應該從哪些域控制器上接收更新數據?
回答以上的這些問題將有助于您決定使用哪一種恢復模式:非授權(Nonauthoritative)模式或者授權(Authoritative)模式。