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