备份证书服务

下面是一个方案,演示如何使用证书服务备份功能来备份证书服务数据库及其关联的文件。

  1. 通过调用 LoadLibrary) 将Certadm.dll库加载到内存 (。
  2. 通过 GetProcAddress) 检索Certadm.dll (中每个必需函数的地址。 在剩余步骤中调用函数时,请使用这些地址。
  3. 调用 CertSrvIsServerOnline 以确定证书服务是否处于联机状态。 证书服务必须联机,备份操作才能成功。
  4. 调用 CertSrvBackupPrepare 以启动备份会话。 生成的证书服务备份上下文句柄将由许多其他备份函数使用。
  5. 调用 CertSrvRestoreGetDatabaseLocations 以确定还原映射。 还原映射包含还原备份时要使用的路径。 将 CertSrvRestoreGetDatabaseLocations 检索到的信息保存到特定于应用程序的位置。
  6. 调用 CertSrvBackupGetDatabaseNames 以确定要备份的数据库文件的名称。 对于其中每个文件,请执行步骤 7 到 9。
  7. 调用 CertSrvBackupOpenFile 以打开文件进行备份。
  8. 调用 CertSrvBackupRead 以从文件中读取部分字节,然后调用特定于应用程序的例程以将字节存储在备份介质上。 重复此步骤,直到备份文件中的所有字节。
  9. 调用 CertSrvBackupClose 以关闭文件。
  10. 调用 CertSrvBackupGetBackupLogs 以确定要备份的日志文件的名称。 对于其中每个文件,请执行步骤 7 到 9。
  11. 调用 CertSrvBackupTruncateLogs 以截断步骤 6 和 10 中备份的日志文件。 此步骤是可选的;但是,仅当 CertSrvBackupGetDatabaseNames 和 CertSrvBackupGetBackupLogs 返回的所有文件都已备份 (调用 CertSrvBackupTruncateLogs,否则还原操作将失败) 。 有关详细信息,请参阅 CertSrvBackupTruncateLogs 参考页。
  12. 调用 CertSrvBackupGetDynamicFileList 以确定要备份的非数据库文件的名称。 这些文件仅由 函数标识,并且必须通过某种其他方式进行备份。
  13. 使用独立于Certadm.dll的例程备份步骤 12 中标识的动态文件。
  14. 调用 CertSrvBackupEnd 以结束备份会话。
  15. 根据需要调用 CertSrvBackupFree 以释放由某些证书服务备份函数分配的缓冲区。 调用 CertSrvBackupGetBackupLogsCertSrvBackupGetDatabaseNamesCertSrvBackupGetDynamicFileList 将分配可通过调用 CertSrvBackupFree 释放的缓冲区。
  16. 通过调用 FreeLibrary 释放Certadm.dll资源。

有关备份证书服务数据库和关联文件所需的特权的信息,请参阅 设置备份和还原特权