Восстановление служб сертификатов из резервной копии
В следующем сценарии показано, как функции резервного копирования служб сертификатов можно использовать для восстановления базы данных служб сертификатов и связанных с ней файлов. Процесс восстановления включает запись файлов, содержащихся в резервном наборе данных, на диск. Вы можете восстановить несколько резервных наборов данных (одна полная резервная копия плюс ноль или несколько добавочных резервных копий), но все восстановление должно быть завершено до начала процесса восстановления. Процесс восстановления включает в себя повторение файлов журналов служб сертификатов для обеспечения согласованности базы данных и файлов журнала, обеспечивая тем самым целостность базы данных. Сценарий иллюстрирует вызовы функций для восстановления резервных наборов данных и информирования служб сертификатов о параметрах восстановления.
Перед реализацией этого сценария должна существовать полная резервная копия базы данных служб сертификатов.
- Загрузите библиотеку Certadm.dll в память (путем вызова LoadLibrary).
- Получите адрес каждой из необходимых функций в Certadm.dll (с помощью GetProcAddress). Используйте эти адреса при вызове функций на оставшихся шагах.
- Вызовите CertSrvIsServerOnline , чтобы определить, подключены ли службы сертификатов. Если службы сертификатов запущены, закройте их, прежде чем продолжить. Службы сертификатов не должны находиться в сети, чтобы операции восстановления были успешными.
- Вызовите CertSrvRestorePrepare , чтобы начать сеанс восстановления. Результирующий дескриптор контекста резервного копирования служб сертификатов будет использоваться несколькими другими функциями.
- Определите путь к расположению базы данных. В сценарии резервного копирования это значение было бы доступно из вызова CertSrvRestoreGetDatabaseLocations; Это значение должно храниться в составе резервной копии.
- Создайте карту восстановления, указывающую имя восстановленной базы данных. Структура схемы восстановления базы данных служб сертификатов (CSEDB_RSTMAPW) используется для указания схемы восстановления. Задайте для элемента pwszDatabaseName CSEDB_RSTMAPW и члена pwszNewDatabaseName CSEDB_RSTMAPW расположение базы данных, определенное на шаге 5. При необходимости, если имя восстановленной базы данных отличается от имени резервной базы данных, задайте для члена pwszNewDatabaseName CSEDB_RSTMAPW новое имя базы данных.
- Если вы хотите убедиться, что изменения, внесенные в базу данных после выполнения резервного копирования, не применяются повторно после завершения восстановления базы данных (в рамках восстановления базы данных, выполненного во время следующего запуска служб сертификатов), удалите файлы из активных каталогов базы данных и журналов целевого сервера.
- Скопируйте файлы, содержащиеся в полной резервной копии, в каталоги активной базы данных и журналов целевого сервера.
- Вызовите CertSrvRestoreRegister , чтобы зарегистрировать операцию восстановления для полной резервной копии. CertSrvRestoreRegister использует схему восстановления, указанную на шаге 6. CertSrvRestoreRegister также указывает расположение резервной базы данных и журналов. Вызов CertSrvRestoreRegister приведет к принудительной попытке служб сертификатов выполнить операцию восстановления при следующем запуске. Он также не позволяет службам сертификатов обрабатывать запросы сертификатов до завершения восстановления.
- Вызовите CertSrvRestoreRegisterComplete, завершив тем самым действие регистрации, начатое на шаге 8. Обратите внимание, что регистрация операции восстановления — это инструкция для служб сертификатов, которую следует выполнить при ее запуске. фактическое восстановление будет выполняться только после запуска служб сертификатов.
- Для восстановления каждой добавочной резервной копии скопируйте файлы, содержащиеся в добавочной резервной копии, в каталог active log на целевом сервере, а затем вызовите CertSrvRestoreRegister, а затем вызовите CertSrvRestoreRegisterComplete. Регистрация добавочных резервных копий для восстановления может выполняться в любом порядке, но перед каждым вызовом CertSrvRestoreRegister на сервер следует копировать только набор файлов для одной добавочной резервной копии.
- Скопируйте динамические файлы служб сертификатов на целевой сервер. Динамические файлы были бы определены во время резервного копирования при вызове CertSrvBackupGetDynamicFileList . Возможно, потребуется остановить службу публикации в Интернете, чтобы разрешить перезапись динамических файлов.
- Вызовите CertSrvRestoreEnd , чтобы завершить сеанс восстановления.
- Запустите приложение служб сертификатов вручную (или дождитесь следующего перезапуска, чтобы оно запустилось автоматически). При запуске служб сертификатов определяется, зарегистрирована ли операция восстановления. Если операция восстановления зарегистрирована, службы сертификатов начнут восстановление. Службы сертификатов не будут обрабатывать запросы сертификатов до завершения операции восстановления.
Примечание
После завершения восстановления важно создать новую полную резервную копию базы данных служб сертификатов. Это необходимо для усечения восстановленных файлов журнала и создания базового резервного набора данных для восстановления в будущем. Резервные копии, выполненные после восстановления, нельзя смешивать с резервными копиями (полными или добавочными), сделанными перед восстановлением; то есть после восстановления базы данных служб сертификатов и ее последующего состояния нельзя использовать резервные копии перед восстановлением для восстановления базы данных в это последующее состояние.