Ripristino dei servizi certificati dal backup
Lo scenario seguente illustra come usare le funzioni di backup di Servizi certificati per ripristinare e ripristinare un database di Servizi certificati e i relativi file associati. Il processo di ripristino comporta la scrittura dei file contenuti in un set di backup su disco. È possibile ripristinare più set di backup (un backup completo più zero o più backup incrementali), ma tutti i ripristini devono essere completati prima di iniziare il processo di ripristino. Il processo di ripristino prevede la riproduzione dei file di log di Servizi certificati per garantire la coerenza dei file di database e di log, garantendo così l'integrità del database. Lo scenario illustra le chiamate di funzione per ripristinare i set di backup e informare i servizi certificati dei parametri di ripristino.
Prima di implementare questo scenario, è necessario che esista un backup completo esistente del database di Servizi certificati.
- Caricare la libreria Certadm.dll in memoria (chiamando LoadLibrary).
- Recuperare l'indirizzo di ognuna delle funzioni necessarie in Certadm.dll (tramite GetProcAddress). Usare questi indirizzi quando si chiamano le funzioni nei passaggi rimanenti.
- Chiamare CertSrvIsServerOnline per determinare se Servizi certificati è online. Se Servizi certificati è in esecuzione, arrestarlo prima di procedere. I servizi certificati non devono essere online perché le operazioni di ripristino siano riuscite.
- Chiamare CertSrvRestorePrepare per avviare una sessione di ripristino. L'handle del contesto di backup di Servizi certificati risultante verrà usato da diverse altre funzioni.
- Determinare il percorso del database. Durante uno scenario di backup, questo valore sarebbe stato disponibile da una chiamata a CertSrvRestoreGetDatabaseLocations; questo valore deve essere stato archiviato come parte del backup.
- Creare una mappa di ripristino specificando il nome del database ripristinato. Viene usata una struttura della mappa di ripristino del database di Servizi certificati (CSEDB_RSTMAPW) per specificare una mappa di ripristino. Impostare il membro pwszDatabaseName del CSEDB_RSTMAPW e il membro pwszNewDatabaseName del CSEDB_RSTMAPW sul percorso del database determinato nel passaggio 5. Facoltativamente, se il database ripristinato deve avere un nome diverso da quello del database di backup, impostare il membro pwszNewDatabaseName del CSEDB_RSTMAPW sul nuovo nome del database.
- Se si desidera assicurarsi che le modifiche apportate al database dopo l'esecuzione del backup non vengano riapplicate dopo il completamento del ripristino del database (come parte del ripristino del database eseguito durante l'avvio successivo di Servizi certificati), eliminare i file dalle directory di log e database attivi del server di destinazione.
- Copiare i file contenuti nel backup completo nelle directory di log e del database attivo del server di destinazione.
- Chiamare CertSrvRestoreRegister per registrare un'operazione di ripristino per il backup completo. CertSrvRestoreRegister usa la mappa di ripristino specificata nel passaggio 6. CertSrvRestoreRegister specifica anche il percorso del database e dei log di backup. La chiamata a CertSrvRestoreRegister forza i servizi certificati a tentare un'operazione di ripristino al successivo avvio. Impedisce inoltre ai servizi certificati di elaborare le richieste di certificato fino al completamento del ripristino.
- Chiamare CertSrvRestoreRegisterComplete, completando così l'attività di registrazione avviata nel passaggio 8. Si noti che la registrazione di un'operazione di ripristino è un'istruzione per i servizi certificati da seguire all'avvio; il ripristino effettivo verrà eseguito solo dopo l'avvio di Servizi certificati.
- Per ogni backup incrementale da ripristinare, copiare i file contenuti nel backup incrementale nella directory dei log attivi del server di destinazione, quindi chiamare CertSrvRestoreRegister, seguito da una chiamata a CertSrvRegisterComplete. La registrazione dei backup incrementali per il ripristino può verificarsi in qualsiasi ordine, ma solo il set di file per un backup incrementale deve essere copiato nel server prima di ogni chiamata a CertSrvRegister.
- Copiare i file dinamici di Servizi certificati nel server di destinazione. I file dinamici sarebbero stati identificati durante il backup quando è stato chiamato CertSrvBackupGetDynamicFileList . Potrebbe essere necessario arrestare il Servizio pubblicazione Web globale per consentire la sovrascrittura dei file dinamici.
- Chiamare CertSrvRestoreEnd per terminare la sessione di ripristino.
- Avviare manualmente l'applicazione Servizi certificati (o attendere l'avvio automatico del riavvio successivo). All'avvio di Servizi certificati, determina se è stata registrata un'operazione di ripristino; se è stata registrata un'operazione di ripristino, Servizi certificati avvierà il ripristino. Servizi certificati non elabora alcuna richiesta di certificato fino al completamento dell'operazione di ripristino.
Nota
Al termine di un ripristino, è importante eseguire un nuovo backup completo del database di Servizi certificati. Questa operazione è necessaria per troncare i file di log ripristinati e per stabilire un set di backup di base per i ripristini futuri. I backup eseguiti dopo un ripristino non possono essere combinati con i backup (completi o incrementali) eseguiti prima del ripristino; ovvero, dopo il ripristino di un database di servizi certificati e dopo che è stato eseguito lo stato successivo, non è possibile utilizzare i backup di pre-ripristino per ripristinare il database in tale stato successivo.