还原 Active Directory 服务器
Active Directory 服务器必须脱机还原。 系统必须在目录服务还原模式下重新启动。 在此模式下,操作系统会在没有 Active Directory 域服务的情况下运行,所有用户验证都通过注册表中的安全帐户管理器 (SAM) 进行。 要还原 Active Directory 域服务,请使用要还原的域控制器上的本地管理员的凭据。
还原函数的调用方必须拥有 SE_RESTORE_NAME 访问权限。 使用 DsSetAuthIdentity 函数来设置要在其中调用目录备份和和还原函数的安全上下文。
请注意,在还原 Active Directory 域服务时,还必须还原其他系统状态组件。
还原 Active Directory 域服务
- 调用 DsIsNTDSOnline 函数以确定 Active Directory 域服务是否正在运行。
- 如果 Active Directory 域服务尚未运行,则调用 DsRestorePrepare 函数来初始化还原操作并获取备份上下文句柄。 如果 Active Directory 域服务正在运行,则无法还原,还原应用程序必须让还原操作失败。 DsRestorePrepare 函数要求在备份操作期间从 DsBackupPrepare 函数中获取过期令牌。
- 调用 DsRestoreGetDatabaseLocations 函数以确定要还原文件的目录。 如果此函数失败,则将数据恢复到原始备份源目录,即备份数据的目录。
- 调用 DsRestoreRegister 函数为还原操作准备 Active Directory 服务器并锁定还原目录。
- 使用标准 Win32 函数还原文件。 首先,删除目标目录中的所有文件;然后将备份文件复制到目标目录。
- 调用 DsRestoreRegisterComplete 函数以指明还原已完成。
- 调用 DsRestoreEnd 函数以释放与上下文关联的任何资源。
在目录服务还原模式下还原后,应在正常模式下重新启动域控制器。 当目录服务启动时,域控制器将执行正常的一致性检查,然后还原的目录将联机。
请注意,还原 Active Directory 服务器总是由两部分操作组成。 首先,将数据库还原到在备份时的状态。 然后,复制目录,新恢复的 DSA 会从域和企业林中的其他 DSA 复制备份后更新。
在 Windows 2000 或 Windows Server 2003 上运行的计算机就是域控制器,其中包含目录服务的副本。
DsRestoreRegister 函数会将数据添加到注册表中,这些数据必须完成注册表还原过程,才能正常进行还原。 为确保保留此注册表数据,请在调用 RegReplaceKey 函数后重新启动计算机之前,使用 DsRestore* 函数还原 Active Directory 域服务。 此过程之所以有效,是因为 RegReplaceKey 在重新启动计算机之前不会实际替换注册表配置单元,而且 DsRestoreRegister 函数添加的注册表数据在注册表还原操作中会被明确排除在替换范围之外。