Condividi tramite


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.

  1. Carica la libreria Certadm.dll in memoria chiamando LoadLibrary.
  2. Recuperare l'indirizzo di ognuna delle funzioni necessarie in Certadm.dll (tramite GetProcAddress). Utilizza questi indirizzi quando chiami le funzioni nei passaggi rimanenti.
  3. Chiamare CertSrvIsServerOnline per determinare se Servizi certificati è online. Se i Servizi di certificazione sono in esecuzione, arrestali prima di procedere. I servizi certificati non devono essere online perché le operazioni di ripristino siano riuscite.
  4. Chiamare CertSrvRestorePrepare per avviare una sessione di ripristino. L'handle di contesto di backup dei Servizi di Certificazione risultante verrà usato da numerose altre funzioni.
  5. Determinare il percorso della posizione 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.
  6. Creare una mappa di ripristino specificando il nome del database ripristinato. Per specificare una mappa di ripristino, viene usata una struttura della mappa di ripristino del database di Servizi certificati (CSEDB_RSTMAPW). Impostare il membro pwszDatabaseName e il membro pwszNewDatabaseName del CSEDB_RSTMAPW nel percorso del database determinato nel passaggio 5. Facoltativamente, se il database ripristinato deve avere un nome diverso rispetto al database di backup, impostare il del CSEDB_RSTMAPW pwszNewDatabaseName membro sul nuovo nome del database.
  7. Se si vuole assicurarsi che le modifiche apportate al database dopo l'esecuzione del backup non vengano riapplicate al termine 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 dal database attivo del server di destinazione.
  8. Copiare i file contenuti nel backup completo nelle directory di log e del database attivo del server di destinazione.
  9. 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 di backup e dei log. 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.
  10. 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 al momento dell'avvio; il recupero effettivo verrà eseguito solo dopo l'avvio di Servizi certificati.
  11. Per ripristinare ogni backup incrementale, copiare i file contenuti nel backup incrementale nella directory di log attiva del server di destinazione, quindi chiamare CertSrvRestoreRegister, seguito da una chiamata a CertSrvRestoreRegisterComplete. 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 CertSrvRestoreRegister.
  12. Copiare i file dinamici di Servizi certificati nel server di destinazione. I file dinamici sarebbero stati identificati durante il backup quando è stata chiamata CertSrvBackupGetDynamicFileList. Potrebbe essere necessario arrestare il Servizio di pubblicazione del World Wide Web per consentire la sovrascrittura dei file dinamici.
  13. Chiamare CertSrvRestoreEnd per terminare la sessione di ripristino.
  14. Avvia manualmente l'applicazione Servizi di certificati (o attendi il prossimo riavvio affinché l'avvio avvenga automaticamente). 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 elaborerà 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. È necessario troncare i file di log ripristinati e stabilire un set di backup di base per i ripristini futuri. I backup eseguiti dopo un ripristino non possono essere misti con i backup (completi o incrementali) eseguiti prima del ripristino; ovvero, dopo che un database di servizi certificati è stato ripristinato e ha eseguito lo stato successivo, non è possibile utilizzare i backup di pre-ripristino per ripristinare il database in tale stato successivo.