Share via


Restaurando serviços de certificado do backup

O cenário a seguir mostra como as funções de backup dos Serviços de Certificados podem ser usadas para restaurar e recuperar um banco de dados dos Serviços de Certificados e seus arquivos associados. O processo de restauração envolve gravar os arquivos contidos em um conjunto de backup em disco. Você pode restaurar vários conjuntos de backup (um backup completo mais zero ou mais backups incrementais), mas todas as restaurações devem ser concluídas antes de iniciar o processo de recuperação. O processo de recuperação envolve a reprodução de arquivos de log dos Serviços de Certificados para garantir a consistência do banco de dados e do arquivo de log, garantindo assim a integridade do banco de dados. O cenário ilustra as chamadas de função para restaurar os conjuntos de backup e informar os Serviços de Certificados sobre os parâmetros de recuperação.

Um backup completo existente do banco de dados dos Serviços de Certificados deve existir antes de implementar esse cenário.

  1. Carregue a biblioteca Certadm.dll na memória (chamando LoadLibrary).
  2. Recupere o endereço de cada uma das funções necessárias em Certadm.dll (por meio de GetProcAddress). Use esses endereços ao chamar as funções nas etapas restantes.
  3. Chame CertSrvIsServerOnline para determinar se os Serviços de Certificados estão online. Se os Serviços de Certificados estiverem em execução, desligue-o antes de continuar. Os Serviços de Certificados não devem estar online para que as operações de restauração sejam bem-sucedidas.
  4. Chame CertSrvRestorePrepare para iniciar uma sessão de restauração. O identificador de contexto de backup dos Serviços de Certificados resultante será usado por várias das outras funções.
  5. Determine o caminho para o local do banco de dados. Durante um cenário de backup, esse valor estaria disponível em uma chamada para CertSrvRestoreGetDatabaseLocations; esse valor deveria ter sido armazenado como parte do backup.
  6. Crie um mapa de restauração especificando o nome do banco de dados restaurado. Uma estrutura de mapa de restauração de banco de dados dos Serviços de Certificados (CSEDB_RSTMAPW) é usada para especificar um mapa de restauração. Defina o membro pwszDatabaseName do CSEDB_RSTMAPW e o membro pwszNewDatabaseName do CSEDB_RSTMAPW como o local do banco de dados determinado na etapa 5. Opcionalmente, se o banco de dados restaurado tiver um nome diferente do banco de dados de backup, defina o membro pwszNewDatabaseName do CSEDB_RSTMAPW como o novo nome do banco de dados.
  7. Se você quiser garantir que as modificações feitas no banco de dados após a execução do backup não sejam reaplicadas após a conclusão da restauração do banco de dados (como parte da recuperação do banco de dados executada durante a próxima inicialização dos Serviços de Certificados), exclua os arquivos do banco de dados ativo do servidor de destino e dos diretórios de log.
  8. Copie os arquivos contidos no backup completo para o banco de dados ativo do servidor de destino e os diretórios de log.
  9. Chame CertSrvRestoreRegister para registrar uma operação de restauração para o backup completo. CertSrvRestoreRegister usa o mapa de restauração especificado na etapa 6. CertSrvRestoreRegister também especifica o local do banco de dados de backup e dos logs. Chamar CertSrvRestoreRegister forçará os Serviços de Certificados a tentar uma operação de restauração na próxima vez que ela for iniciada. Ele também impede que os Serviços de Certificados processem solicitações de certificado até que a restauração seja concluída.
  10. Chame CertSrvRestoreRegisterComplete, concluindo assim a atividade de registro iniciada na etapa 8. Observe que o registro de uma operação de restauração é uma instrução para que os Serviços de Certificados sigam quando ela for iniciada; a recuperação real ocorrerá somente depois que os Serviços de Certificados forem iniciados.
  11. Para que cada backup incremental seja restaurado, copie os arquivos contidos no backup incremental para o diretório de log ativo do servidor de destino e, em seguida, chame CertSrvRestoreRegister, seguido por uma chamada para CertSrvRestoreRegisterComplete. O registro dos backups incrementais para restauração pode ocorrer em qualquer ordem, mas apenas o conjunto de arquivos para um backup incremental deve ser copiado para o servidor antes de cada chamada para CertSrvRestoreRegister.
  12. Copie os arquivos dinâmicos dos Serviços de Certificados para o servidor de destino. Os arquivos dinâmicos teriam sido identificados durante o backup quando CertSrvBackupGetDynamicFileList foi chamado. Pode ser necessário interromper o World Wide Web Publishing Service para permitir a substituição dos arquivos dinâmicos.
  13. Chame CertSrvRestoreEnd para encerrar a sessão de restauração.
  14. Inicie o aplicativo Serviços de Certificados manualmente (ou aguarde até a próxima reinicialização para que ele seja iniciado automaticamente). Quando os Serviços de Certificados forem iniciados, ele determinará se uma operação de restauração foi registrada; se uma operação de restauração tiver sido registrada, os Serviços de Certificados iniciarão a recuperação. Os Serviços de Certificados não processarão nenhuma solicitação de certificado até que a operação de recuperação seja concluída.

Observação

Quando uma recuperação é concluída, é importante que você faça um novo backup completo do banco de dados dos Serviços de Certificados. Isso é necessário para truncar os arquivos de log restaurados e estabelecer um conjunto de backup base para restaurações futuras. Os backups executados após uma restauração não podem ser misturados com backups (completos ou incrementais) feitos antes da restauração; ou seja, depois que um banco de dados de serviços de certificado é restaurado e progrediu para um estado subsequente, você não pode usar os backups de pré-restauração para restaurar o banco de dados para esse estado subsequente.