备份 Active Directory 服务器

Active Directory 服务器备份要求备份数据库与事务日志。 本主题提供有关备份应用程序如何备份 Active Directory 目录服务的演练。

这些备份函数的调用方必须具有 SE_BACKUP_NAME 特权。 可使用 DsSetAuthIdentity 函数来设置要在其中调用目录备份/还原函数的安全上下文。

若要备份 Active Directory 服务器,请执行以下步骤

  1. 调用 DsIsNTDSOnline 函数以确定 Active Directory 域服务是否正在运行。
  2. 如果 Active Directory 域服务正在运行,则请调用 DsBackupPrepare 函数来初始化备份上下文句柄。 如果 Active Directory 域服务未运行,则无法对其进行备份,而备份应用程序也必须使该备份操作失败。
  3. 调用 DsBackupGetDatabaseNames 函数可获取要备份的文件的列表。 若要释放此函数返回的内存,请调用 DsBackupFree 函数。
  4. 对于返回的文件列表中的每个名称,请调用 DsBackupOpenFile 函数,然后重复调用 DsBackupRead 函数,直到读取完整个文件。 读取完文件后,调用 DsBackupClose 函数可将其关闭。
  5. 备份所有数据库文件后,调用 DsBackupGetBackupLogs 函数可获取事务日志列表。 此列表的处理方式与数据库文件列表类似。
  6. 备份完事务日志后,调用 DsBackupTruncateLogs 函数可删除已备份的所有已提交事务日志。
  7. 保存 DsBackupPrepare 函数提供的过期令牌的内容。 可将其保存在文件或某些其他永久性内存中。 必须将此令牌传递给 DsRestorePrepare 函数才能启动还原操作。
  8. 通过将令牌指针传递给 DsBackupFree 函数来释放过期令牌的对应内存。
  9. 最后,调用 DsBackupEnd 函数可释放与备份上下文句柄关联的所有资源。