從備份還原憑證服務
下列案例顯示如何使用憑證服務備份功能來還原和復原 Certificate Services 資料庫及其相關聯的檔案。 還原程式牽涉到將備份組中包含的檔案寫入磁片。 您可以還原多個備份組 (一個完整備份加上零個或多個增量備份) ,但所有還原都必須完成,才能開始復原程式。 復原程式牽涉到憑證服務重新執行記錄檔,以確保資料庫和記錄檔一致性,進而確保資料庫完整性。 此案例說明還原備份組的函式呼叫,並通知憑證服務復原參數。
實作此案例之前,憑證服務資料庫的現有完整備份必須存在。
- 呼叫 LoadLibrary) ,將Certadm.dll程式庫載入記憶體 (。
- 透過 GetProcAddress) ,擷取Certadm.dll (中每個必要函式的位址。 在其餘步驟中呼叫函式時,請使用這些位址。
- 呼叫 CertSrvIsServerOnline 以判斷憑證服務是否在線上。 如果憑證服務正在執行,請先將其關閉再繼續。 憑證服務不得在線上,還原作業才能成功。
- 呼叫 CertSrvRestorePrepare 以開始還原會話。 產生的憑證服務備份內容控制碼將會由數個其他函式使用。
- 判斷資料庫位置的路徑。 在備份案例期間,此值可從 呼叫 CertSrvRestoreGetDatabaseLocations取得;此值應該已儲存為備份的一部分。
- 建立還原對應,指定還原資料庫的名稱。 憑證服務資料庫還原對應結構 (CSEDB_RSTMAPW) 用來指定還原對應。 將CSEDB_RSTMAPW的 pwszDatabaseName 成員和CSEDB_RSTMAPW的 pwszNewDatabaseName 成員設定為步驟 5 中所決定的資料庫位置。 或者,如果還原的資料庫名稱與備份資料庫不同,請將CSEDB_RSTMAPW的 pwszNewDatabaseName 成員設定為新的資料庫名稱。
- 如果您想要確保在執行備份之後對資料庫所做的修改不會在資料庫還原完成之後重新套用, (在下一個憑證服務啟動) 期間執行的資料庫復原時,請從目標伺服器的作用中資料庫和記錄目錄刪除檔案。
- 將完整備份中包含的檔案複製到目標伺服器的使用中資料庫和記錄目錄。
- 呼叫 CertSrvRestoreRegister 以註冊完整備份的還原作業。 CertSrvRestoreRegister 會使用步驟 6 中指定的還原對應。 CertSrvRestoreRegister 也會指定備份資料庫和記錄檔的位置。 呼叫 CertSrvRestoreRegister 將會強制憑證服務在下一次啟動時嘗試還原作業。 它也會防止憑證服務處理憑證要求,直到還原完成為止。
- 呼叫 CertSrvRestoreRegisterComplete,藉此完成步驟 8 中啟動的註冊活動。 請注意,還原作業的註冊是憑證服務在啟動時要遵循的指示;只有在啟動憑證服務之後,才會進行實際的復原。
- 若要還原每個增量備份,請將增量備份中包含的檔案複製到目標伺服器的 Active Log Directory,然後呼叫 CertSrvRestoreRegister,然後呼叫 CertSrvRestoreRegisterComplete。 每次呼叫 CertSrvRestoreRegister之前,應該先將一個增量備份的一組檔案複製到伺服器,才能進行還原的增量備份註冊。
- 將憑證服務動態檔案複製到目標伺服器。 呼叫 CertSrvBackupGetDynamicFileList 時,會在備份期間識別動態檔案。 您可能需要停止 World Wide Web Publishing Service,以允許覆寫動態檔案。
- 呼叫 CertSrvRestoreEnd 結束還原會話。
- 手動啟動憑證服務應用程式 (,或等到下一次重新開機,讓它自動啟動) 。 當憑證服務啟動時,它會判斷是否已註冊還原作業;如果已註冊還原作業,憑證服務將會開始復原。 在復原作業完成之前,憑證服務不會處理任何憑證要求。
注意
當復原完成時,請務必建立憑證服務資料庫的新完整備份。 這是截斷還原的記錄檔,以及建立未來還原的基礎備份組的必要專案。 還原之後執行的備份無法與在還原之前建立的備份 (完整或累加式) 混合;也就是說,在還原憑證服務資料庫並進入後續狀態之後,您無法使用預先還原備份將資料庫還原至該後續狀態。