启动基于 Windows 的域控制器时出错:目录服务无法启动

本文介绍如何从损坏的 Active Directory 数据库或阻止计算机在正常模式下启动的类似问题中恢复。

适用于: Windows Server 2003
原始 KB 编号: 258062

摘要

本文将引导你完成一系列步骤,这些步骤可帮助你诊断 目录服务无法启动 系统错误的原因。 这些步骤可能包括:

  • 验证 Active Directory 目录服务文件是否存在。
  • 验证文件系统权限是否正确。
  • 检查 Active Directory 数据库的完整性。
  • 执行语义数据库分析。
  • 修复 Active Directory 数据库。
  • 删除并重新创建 Active Directory 数据库。

本文还介绍了如何使用 Ntdsutil 或 Esentutl 对 Active Directory 数据库执行有损修复。 由于有损修复会删除数据并可能引入新问题,因此仅当它是唯一可用的选项时,才执行有损修复。

症状

启动域控制器时,屏幕可能会为空,并可能会收到以下错误消息:

LSASS.EXE - 系统错误,安全帐户管理器初始化失败,因为出现以下错误:目录服务无法启动。 错误状态0xc00002e1。

请单击“确定”关闭此系统并重新启动到目录服务还原模式,检查事件日志以获取更多详细信息。

此外,事件日志中可能会出现以下事件 ID 消息:

事件 ID:700
说明:“NTDS (260) Online 碎片整理正在数据库 NTDS 上开始传递。DIT。”
事件 ID:701
说明:“NTDS (268) Online 碎片整理已完成数据库 'C:\WINNT\NTDS\ntds.dit'的完整传递。”
事件 ID:101
说明:“NTDS (260) 数据库引擎已停止。”
事件 ID:1004
说明:“目录已成功关闭。”
事件 ID:1168
说明:“发生错误:1032 (fffffbf8) 。 (内部 ID 4042b) 。 请联系 Microsoft 产品支持服务寻求帮助。”
事件 ID:1103
说明:“Windows 目录服务数据库无法初始化并返回错误 1032。 无法恢复的错误,目录无法继续。”

原因

出现此问题的原因是满足以下一个或多个条件:

  • 对驱动器根目录的 NTFS 文件系统权限过于严格。
  • NTDS 文件夹的 NTFS 文件系统权限过于严格。
  • 包含 Active Directory 数据库的卷的驱动器号已更改。
  • Active Directory 数据库 (Ntds.dit) 已损坏。
  • NTDS 文件夹已压缩。

解决方案

要解决此问题,请按照下列步骤操作:

  1. 重新启动域控制器。

  2. 出现 BIOS 信息时,按 F8。

  3. 选择“ 目录服务还原模式”,然后按 Enter。

  4. 使用目录服务还原模式密码登录。

  5. 单击“开始”,选择“运行”,在“打开”框中键入 cmd,然后单击“确定”。

  6. 在命令提示符下,键入 ntdsutil 文件信息

    此时会显示类似于以下内容的输出:

    驱动器信息:

    C:\ NTFS (固定驱动器 ) 可用 (533.3 Mb) 总计 (4.1 Gb)

    DS 路径信息:

    数据库:C:\WINDOWS\NTDS\ntds.dit - 10.1 Mb Backup dir : C:\WINDOWS\NTDS\dsadata.bak Working dir: C:\WINDOWS\NTDS Log dir : C:\WINDOWS\NTDS - 42.1 Mb 总计 temp.edb - 2.1 Mb res2.log - 10.0 Mb res1.log - 10.0 Mb edb00001.log - 10.0 Mb edb.log - 10.0 Mb

    注意

    此输出中包含的文件位置也位于以下注册表子项中:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Parameters

    此键中的以下条目包含文件位置:

    • 数据库备份路径
    • 数据库日志文件路径
    • DSA 工作目录
  7. 验证步骤 6 中输出中列出的文件是否存在。

  8. 验证 Ntdsutil 输出中的文件夹是否具有正确的权限。 下表中指定了正确的权限。

    Windows Server 2003

    帐户 权限 继承
    系统警报 完全控制 此文件夹、子文件夹和文件
    管理员 完全控制 此文件夹、子文件夹和文件
    创建者所有者 完全控制 仅限子文件夹和文件
    本地服务 创建文件夹/追加数据 此文件夹和子文件夹

    Windows 2000

    帐户 权限 继承
    管理员 完全控制 此文件夹、子文件夹和文件
    系统警报 完全控制 此文件夹、子文件夹和文件

    注意

    此外,系统帐户需要对以下文件夹拥有完全控制权限:

    • 包含 Ntds 文件夹的驱动器的根目录
    • %WINDIR% 文件夹

    在 Windows Server 2003 中,%WINDIR% 文件夹的默认位置为 C:\WINDOWS。 在 Windows 2000 中,%WINDIR% 文件夹的默认位置为 C:\WINNT。

  9. 检查 Active Directory 数据库的完整性。 为此,请在命令提示符下键入 ntdsutil files integrity

    如果完整性检查指示没有错误,请在正常模式下重启域控制器。 如果完整性检查未完成且没有错误,请继续执行以下步骤。

  10. 执行语义数据库分析。 为此,请在命令提示符处键入以下命令,包括引号:

    ntdsutil "sem d a" go
    
  11. 如果语义数据库分析指示没有错误,请继续执行以下步骤。 如果分析报告了任何错误,请在命令提示符处键入以下命令,包括引号:

    ntdsutil "sem d a" "go f"
    
  12. 按照以下 Microsoft 知识库文章中的步骤对 Active Directory 数据库执行脱机碎片整理:

    232122 对 Active Directory 数据库执行脱机碎片整理

  13. 如果脱机碎片整理后问题仍然存在,并且同一域中存在其他正常运行的域控制器,请从服务器中删除 Active Directory,然后重新安装 Active Directory。 为此,请按照以下 Microsoft 知识库文章中的“解决方法”部分中的步骤操作:

    332199 在 Windows Server 2003 和 Windows 2000 Server 中使用 Active Directory 安装向导强制降级时,域控制器不会正常降级

    注意

    如果域控制器正在运行 Microsoft Small Business Server,则无法执行此步骤,因为无法将 Small Business Server 作为其他域控制器添加到现有域中, (副本 (replica) ) 。 如果系统状态备份比逻辑删除生存期更新,请还原该系统状态备份,而不是从服务器中删除 Active Directory。 默认情况下,逻辑删除生存期为 60 天。

  14. 如果没有可用的系统状态备份,并且域中没有其他正常的域控制器,我们建议通过删除 Active Directory,然后在服务器上重新安装 Active Directory 来重新生成域,从而创建新域。 可以再次使用旧域名,也可以使用新域名。 还可以通过在服务器上重新格式化并重新安装 Windows 来重新生成域。 但是,删除 Active Directory 会更快,并且可以有效地删除损坏的 Active Directory 数据库。

    如果没有可用的系统状态备份,则域中没有其他正常运行的域控制器,并且你必须让域控制器立即工作,并使用 Ntdsutil 或 Esentutl 执行有损修复。

    注意

    使用 Ntdsutil 或 Esentutl 从 Active Directory 数据库损坏中恢复后,Microsoft 不支持域控制器。 如果执行此类修复,则必须重新生成域控制器,使 Active Directory 处于受支持的配置中。 Ntdsutil 中的 repair 命令使用 Esentutl 实用工具对数据库执行有损修复。 这种修复通过从数据库中删除数据来修复损坏问题。 只使用这种维修作为最后的手段。

    虽然域控制器可能会启动,并且可能在修复后正常运行,但其状态不受支持,因为从数据库中删除的数据可能会导致许多问题,这些问题可能要到以后才会出现。 无法确定修复数据库时删除了哪些数据。 修复后,必须尽快重新生成域,才能将 Active Directory 返回到受支持的配置。 如果仅使用本文中引用的脱机碎片整理或语义数据库分析方法,则之后无需重新生成域控制器。

  15. 在执行有损修复之前,请联系 Microsoft 产品支持服务,确认你已查看所有可能的恢复选项,并验证数据库是否确实处于不可恢复状态。 有关 Microsoft 产品支持服务电话号码的完整列表以及有关支持成本的信息,请访问以下 Microsoft 网站:

    联系人Microsoft 支持部门

    在基于 Windows 2000 Server 的域控制器上,使用 Ntdsutil 恢复 Active Directory 数据库。 为此,请在目录服务还原模式的命令提示符下键入 ntdsutil files repair

    若要对基于 Windows Server 2003 的域控制器执行有损修复,请使用 Esentutl.exe 工具来恢复 Active Directory 数据库。 为此,请在基于 Windows Server 2003 的域控制器上的命令提示符处键入 esentutl /p

  16. 修复操作完成后,使用其他扩展名(如 .bak)重命名 NTDS 文件夹中的.log文件,并尝试在正常模式下启动域控制器。

  17. 如果在修复后可以在正常模式下启动域控制器,请尽快将相关的 Active Directory 对象迁移到新林。 由于这种有损修复方法通过删除数据修复了损坏问题,因此可能会导致以后极难排查的问题。 在修复后的第一次机会时,必须重新生成域,以便将 Active Directory 恢复为受支持的配置。

    可以使用 Active Directory 迁移工具 (ADMT) 、Ldifde 或非 Microsoft 迁移工具迁移用户、计算机和组。 ADMT 可以使用或不带安全标识符 (SID) 历史记录迁移用户帐户、计算机帐户和安全组。 ADMT 还会迁移用户配置文件。 若要在 Small Business Server 环境中使用 ADMT,请查看“从 Small Business Server 2000 或 Windows 2000 Server 迁移”白皮书。 若要获取此白皮书,请访问以下 Microsoft 网站:

    从 Small Business Server 2000 或 Windows 2000 Server 迁移到 Windows Small Business Server 2003

    可以使用 Ldifde 将多种类型的对象从损坏的域导出和导入到新域。 这些对象包括用户帐户、计算机帐户、安全组、组织单位、Active Directory 站点、子网和站点链接。 Ldifde 无法迁移 SID 历史记录。 Ldifde 是 Windows 2000 Server 和 Windows Server 2003 的一部分。

    有关如何使用 Ldifde 的详细信息,请单击下面的文章编号以查看 Microsoft 知识库中的文章:

    237677 使用 Ldifde 将目录对象导入和导出到 Active Directory

    可以使用 组策略 管理控制台 (GPMC) 将文件系统和组策略对象的 Active Directory 部分从损坏的域导出到新域。

    若要获取 GPMC,请访问以下 Microsoft 网站:

    云计算服务

    有关如何使用 GPMC 迁移组策略对象的信息,请查看“使用 GPMC 跨域迁移 GPO”白皮书。 若要获取此白皮书,请访问以下 Microsoft 网站:

    跨域迁移 GPO

  18. 恢复后,请评估当前的备份计划,以确保计划系统状态备份的频率足够高。 计划系统状态备份至少每天或每次重大更改之后。 系统状态备份必须包含所需的容错级别。 例如,不要将备份存储在与要备份的计算机相同的驱动器上。 尽可能使用多个域控制器,以避免单一故障点。 将备份存储在场外位置,以便站点灾难 (火灾、盗窃、洪水、计算机盗窃) 不会影响恢复能力。 以下 Microsoft 网站可帮助你制定备份计划。