如何提高 Active Directory 域和林功能级别

本文介绍如何提高 Active Directory 域和林功能级别。

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

摘要

有关 Active Directory 域服务 (AD DS) 中的Windows Server 2016和新功能的信息,请参阅 Windows Server 2016 Active Directory 域服务 中的新增功能。

本文讨论提高基于 Microsoft Windows Server 2003 或更高版本的域控制器支持的域和林功能级别。 Active Directory 有四个版本,只有从 Windows NT Server 4.0 更改的级别需要特别注意。 因此,通过使用域控制器操作系统、域或林功能级别的较新、当前或较旧版本来提及其他级别更改。

功能级别是 Microsoft Windows 2000 Server 中为激活新的 Active Directory 功能而引入的混合模式和本机模式概念的扩展。 当所有域控制器都在域或林中运行最新的 Windows Server 版本,以及管理员激活域或林中的相应功能级别时,其他一些 Active Directory 功能可用。

若要激活最新的域功能,所有域控制器都必须运行域中的最新 Windows Server 操作系统版本。 如果满足此要求,管理员可以提高域功能级别。

若要激活最新的林范围功能,林中的所有域控制器都必须运行与所需林功能级别相对应的 Windows Server 操作系统版本。 此外,当前域功能级别必须已处于最新级别。 如果满足这些要求,管理员可以提高林功能级别。

通常,对域和林功能级别的更改是不可逆的。 如果可以撤消更改,则必须使用林恢复。 使用 Windows Server 2008 R2 操作系统,可以回滚对域功能级别和林功能级别的更改。 但是,只能在 Technet 文章中介绍的 Active Directory 功能级别的特定方案中执行回滚。

注意

最新的域功能级别和最新的林功能级别仅影响域控制器作为一个组一起运行的方式。 与域或林交互的客户端不受影响。 此外,应用程序不受域功能级别或林功能级别更改影响。 但是,应用程序可以利用最新的域功能和最新的林功能。

有关详细信息,请查看 TechNet 文章,了解与各种功能级别关联的功能

提高功能级别

警告

如果域具有或将要具有的域控制器的版本早于该级别引用的版本,则不要提高功能级别。 例如,Windows Server 2008 功能级别要求所有域控制器在域或林中安装 Windows Server 2008 或更高版本的操作系统。 将域功能级别提升到更高级别后,只能通过使用林恢复将其更改回旧级别。 之所以存在此限制,是因为这些功能通常会更改域控制器之间的通信,或者这些功能更改了 Active Directory 数据在数据库中的存储。

启用域和林功能级别的最常见方法是使用 有关 Windows Server 2003 Active Directory 功能级别的 TechNet 文章中所述的图形用户界面 (GUI) 管理工具。 本文讨论 Windows Server 2003。 但是,在较新的操作系统版本中,步骤相同。 此外,功能级别可以手动配置,也可以使用Windows PowerShell脚本进行配置。 有关如何手动配置功能级别的详细信息,请参阅“查看和设置功能级别”部分。

有关如何使用Windows PowerShell脚本配置功能级别的详细信息,请参阅提高林功能级别

手动查看和设置功能级别

轻型目录访问协议 (LDAP) 工具(如 Ldp.exe 和 Adsiedit.msc)可用于查看和修改当前域和林功能级别设置。 手动更改功能级别属性时,最佳做法是在通常由 Microsoft 管理工具面向的 FSMO) 域控制器上 (灵活单主操作进行属性更改。

域功能级别设置

msDS-Behavior-Version 属性位于域的命名上下文 (NC) 头,即 DC=corp、DC=contoso、DC=com。

可以为此属性设置以下值:

  • 值 0 或未设置 =混合级别域
  • 值 1=Windows Server 2003 域级别
  • 值 2=Windows Server 2003 域级别
  • 值 3=Windows Server 2008 域级别
  • 值 4=Windows Server 2008 R2 域级别

混合模式和本机模式设置

ntMixedDomain 属性位于域的命名上下文 (NC) 头,即 DC=corp、DC=contoso、DC=com。

可以为此属性设置以下值:

  • 值 0=本机级别域
  • 值 1=混合级别域

林级别设置

msDS-Behavior-Version 属性位于配置命名上下文中的 CN=Partitions 对象上, (NC) ,即 CN=Partitions、CN=Configuration、DC= ForestRootDomain。

可以为此属性设置以下值:

  • 值 0 或未设置 =混合级别林

  • 值 1=Windows Server 2003 临时林级别

  • 值 2=Windows Server 2003 林级别

    注意

    使用Adsiedit.msc 将 msDS-Behavior-Version 属性从 0 值增加到 1 值时,会收到以下错误消息:
    非法修改操作。 不允许修改的某些方面。

  • 值 3=Windows Server 2008 域级别

  • 值 4=Windows Server 2008 R2 域级别

使用轻型目录访问协议 (LDAP) 工具编辑功能级别后,单击“确定”继续。 分区容器和域头上的属性已正确增加。 如果 Ldp.exe 文件报告了错误消息,则可以放心地忽略该错误消息。 若要验证级别提升是否成功,请刷新属性列表,然后检查当前设置。 如果更改尚未复制到本地域控制器,则也可能在对权威 FSMO 执行级别提升后发生此错误消息。

使用 Ldp.exe 文件快速查看当前设置

  1. 启动 Ldp.exe 文件。
  2. 在“连接”菜单上,单击“连接”
  3. 指定要查询的域控制器,或将空间留空以连接到任何域控制器。

连接到域控制器后,将显示域控制器的 RootDSE 信息。 此信息包括有关林、域和域控制器的信息。 下面是基于 Windows Server 2003 的域控制器的示例。 在以下示例中,假定域模式为 Windows Server 2003,林模式为 Windows 2000 Server。

注意

域控制器功能表示此域控制器的最高可能功能级别。

  • 1> domainFunctionality:2= (DS_BEHAVIOR_WIN2003)
  • 1> forestFunctionality:0= (DS_BEHAVIOR_WIN2000)
  • 1> domainControllerFunctionality: 2= (DS_BEHAVIOR_WIN2003)

手动更改功能级别时的要求

  • 如果满足以下条件之一,则必须在提升域级别之前将域模式更改为本机模式:

    • 域功能级别通过直接修改 domainDNS 对象上的 msdsBehaviorVersion 属性的值,以编程方式提升到第二个功能级别。
    • 使用 Ldp.exe 实用工具或 Adsiedit.msc 实用工具将域功能级别提升到第二个功能级别。

    如果在提高域级别之前未将域模式更改为本机模式,则操作不会成功完成,并且会收到以下错误消息:

    SV_PROBLEM_WILL_NOT_PERFORM

    ERROR_DS_ILLEGAL_MOD_OPERATION

    此外,目录服务日志中记录了以下消息:

    Active Directory could not update the functional level of the following domain because the domain is in mixed mode.
    

    在此方案中,可以使用 Active Directory 用户 & 计算机管理单元、使用 Active Directory 域 & 信任 UI MMC 管理单元或以编程方式将 ntMixedDomain 属性的值更改为 0,从而将域模式更改为本机模式。 当使用此过程将域功能级别提高到 2 (Windows Server 2003) 时,域模式会自动更改为本机模式。

  • 从混合模式到本机模式的转换会将架构管理员安全组和企业管理员安全组的范围更改为通用组。 当这些组已更改为通用组时,系统日志中会记录以下消息:

    Event Type: Information  
    Event Source: SAM  
    Event ID: 16408  
    Computer:Server Name  
    Description: "Domain operation mode has been changed to Native Mode. The change cannot be reversed."
    
  • 使用 Windows Server 2003 管理工具调用域功能级别时,ntmixedmode 属性和 msdsBehaviorVersion 属性将按正确的顺序修改。 但是,这并不总是发生。 在以下方案中,本机模式隐式设置为 0 值,而不会将架构管理员安全组和企业管理员安全组的范围更改为通用:

    • 控制域功能模式的 msdsBehaviorVersion 属性手动或以编程方式设置为值 2。
    • 使用任何方法将林功能级别设置为 2。 在此方案中,域控制器阻止转换到林功能级别,直到将局域网中的所有域配置为本机模式,并在安全组范围内进行所需的属性更改。

与 Windows 2000 Server 相关的功能级别

Windows 2000 Server 仅支持混合模式和本机模式。 此外,它仅将这些模式应用于域功能。 以下部分列出了 Windows Server 2003 域模式,因为这些模式会影响Windows NT 4.0 和 Windows 2000 Server 域的升级方式。

提高域控制器的操作系统级别时,有许多注意事项。 这些注意事项是由 Windows 2000 Server 模式下链接属性的存储和复制限制引起的。

Windows 2000 Server 混合 (默认)

  • 支持的域控制器:Microsoft Windows NT 4.0、Windows 2000 Server、Windows Server 2003
  • 激活的功能:本地组和全局组、全局编录支持

Windows 2000 Server 本机

  • 支持的域控制器:Windows 2000 Server、Windows Server 2003、Windows Server 2008、Windows Server 2008 R2
  • 激活的功能:组嵌套、通用组、Sid 历史记录、在安全组和通讯组之间转换组,可以通过增加林级别设置来提高域级别

Windows Server 2003 临时版

  • 支持的域控制器:Windows NT 4.0、Windows Server 2003
  • 支持的功能:没有在此级别激活的域范围功能。 当林级别增加到临时时,林中的所有域都会自动提升到此级别。 仅当将 Windows NT 4.0 域中的域控制器升级到 Windows Server 2003 域控制器时,才会使用此模式。

Windows Server 2003

  • 支持的域控制器:Windows Server 2003、Windows Server 2008、Windows Server 2008 R2
  • 支持的功能:域控制器重命名、登录时间戳属性更新和复制。 InetOrgPerson objectClass 上的用户密码支持。 受约束的委派,可以重定向用户和计算机容器。

从 Windows NT 4.0 升级或升级基于 Windows Server 2003 的计算机创建的域在 Windows 2000 混合功能级别运行。 Windows 2000 Server 域控制器升级到 Windows Server 2003 操作系统时,Windows 2000 Server 域会保持其当前域功能级别。 可以将域功能级别提高到 Windows 2000 Server 本机或 Windows Server 2003。

临时级别 - 从 Windows NT 4.0 域升级

Windows Server 2003 Active Directory 允许使用名为 Windows Server 2003 临时的特殊林和域功能级别。 此功能级别用于升级现有 Windows NT 4.0 域,其中一个或多个Windows NT 4.0 备份域控制器 (BDC) 在升级后必须正常运行。 此模式不支持 Windows 2000 Server 域控制器。 Windows Server 2003 临时版适用于以下方案:

  • 域从 Windows NT 4.0 升级到 Windows Server 2003。
  • Windows NT 4.0 BDC 不会立即升级。
  • Windows NT包含超过 5000 个成员的组的 4.0 域 (不包括域用户组) 。
  • 没有任何计划随时在林中实现 Windows Server2000 域控制器。

Windows Server 2003 临时版提供了两项重要增强功能,同时仍允许复制到 4.0 BDC Windows NT:

  1. 高效复制安全组,并支持每个组超过 5000 个成员。
  2. 改进了 KCC 站点间拓扑生成器算法。

由于在临时级别激活的组复制效率高,因此建议对所有Windows NT 4.0 升级使用临时级别。 有关更多详细信息,请参阅本文的“最佳做法”部分。

设置 Windows Server 2003 临时林功能级别

Windows Server 2003 临时版可以通过三种不同的方式激活。 强烈建议使用前两种方法。 这是因为在Windows NT 4.0 域的主域控制器 (PDC) 升级到 Windows Server 2003 域控制器后,安全组使用链接值复制 (LVR) 。 不太推荐第三个选项,因为安全组中的成员身份使用单个多值属性,这可能会导致复制问题。 Windows Server 2003 临时版的激活方式如下:

  1. 在升级期间。

    升级充当新林根域中第一个域控制器的 Windows NT 4.0 域的 PDC 时,Dcpromo 安装向导中会显示 选项。

  2. 在升级 Windows NT 4.0 的 Windows NT 4.0 PDC 作为现有林中新域的第一个域控制器之前,请使用轻型目录访问协议 (LDAP) 工具手动配置林功能级别。

    子域从其提升到的林继承林范围的功能设置。 将 Windows NT 4.0 域的 PDC 升级为现有 Windows Server 2003 林中的子域,其中临时林功能级别已使用 Ldp.exe 文件或 Adsiedit.msc 文件配置,允许安全组在操作系统版本升级后使用链接值复制。

  3. 升级后,使用 LDAP 工具。

    在升级期间加入现有 Windows Server 2003 林时,请使用最后两个选项。 这是“空根”域位于位置时的常见方案。 升级后的域作为空根的子级加入,并从林继承域设置。

最佳做法

以下部分讨论提高功能级别的最佳做法。 该部分分为两个部分。 “准备任务”讨论了在增加之前必须完成的工作,“最佳路径增加”讨论了不同级别增加方案的动机和方法。

若要发现 Windows NT 4.0 域控制器,请执行以下步骤:

  1. 从任何基于 Windows Server 2003 的域控制器中,打开Active Directory 用户和计算机

  2. 如果域控制器尚未连接到相应的域,请按照以下步骤连接到相应的域:

    1. 右键单击当前域对象,然后单击“ 连接到域”。
    2. 在“ ”对话框中,键入要连接到的域的 DNS 名称,然后单击“ 确定”。 或者,单击“ 浏览 ”以从域树中选择域,然后单击“ 确定”。
  3. 右键单击域对象,然后单击“ 查找”。

  4. 在“ 查找 ”对话框中,单击“ 自定义搜索”。

  5. 单击要更改其功能级别的域。

  6. 单击“高级”选项卡。

  7. “输入 LDAP 查询”框中,键入以下内容,并在任何字符之间不留空格: (& (objectCategory=computer) (operatingSystem Version=4*) (userAccountControl:1.2.840.113556.1.4.803:=8192) )

    注意

    此查询不区分大小写。

  8. 单击" 立即查找"。

    此时会显示域中运行 Windows NT 4.0 并充当域控制器的计算机列表。

域控制器可能出于以下任何原因出现在列表中:

  • 域控制器运行 Windows NT 4.0,必须升级。
  • 域控制器已升级到 Windows Server 2003,但更改不会复制到目标域控制器。
  • 域控制器不再使用,但域控制器的计算机对象不会从域中删除。

在将域功能级别更改为 Windows Server 2003 之前,必须在列表中以物理方式找到任何域控制器,确定域控制器的当前状态,然后根据需要升级或删除域控制器。

注意

与 Windows Server 2000 域控制器不同,Windows NT 4.0 域控制器不会阻止级别提升。 更改域功能级别时,将停止复制到 Windows NT 4.0 域控制器。 但是,当你尝试在 Windows Server 2000 中将域提升到 Windows Server 2003 林级别时,会阻止混合级别。 在 Windows Server 2000 本机级别或更高版本中满足所有域的林级别要求,即缺少 Windows NT 4.0 BDC。

示例:在级别提高之前准备任务

在此示例中,环境从 Windows Server 2000 混合模式提升到 Windows Server 2003 林模式。

清点早期版本的域控制器的林。

如果准确的服务器列表不可用,请执行以下步骤:

  1. 若要发现混合级别域、Windows Server 2000 域控制器或具有损坏或缺失对象的域控制器,请使用 Active Directory 域和 Trusts MMC 管理单元。
  2. 在管理单元中,单击“ 引发林功能”,然后单击“ 另存为 ”以生成详细报告。
  3. 如果未发现任何问题,则“可用林功能级别”下拉列表中提供了“提高到 Windows Server 2003 林级别” 的选项。 尝试提高林级别时,配置容器中的域控制器对象将搜索未将 msds-behavior-version 设置为所需目标级别的域控制器。 假定它们是已损坏的 Windows Server 2000 域控制器或较新的 Windows Server 域控制器对象。
  4. 如果找到已损坏或丢失计算机对象的早期版本域控制器或域控制器,则它们将包含在报告中。 必须调查这些域控制器的状态,并且必须使用 Ntdsutil 文件修复或删除 Active Directory 中的域控制器表示形式。

有关详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:
216498 在域控制器降级失败后如何删除 Active Directory 中的数据

验证端到端复制在林中是否正常工作

若要验证端到端复制在林中是否正常工作,请对 Windows Server 2000 或 Windows Server 2003 域控制器使用 Windows Server 2003 或更高版本的 Repadmin:

  • Repadmin/Replsum * /Sort:Delta[/Errorsonly] 用于初始清单。

  • Repadmin/Showrepl * /CSV>showrepl.csv. 导入到 Excel,然后使用数据自动>筛选器标识复制功能。

    使用复制工具(如 Repadmin)验证林范围的复制是否正常工作。

验证所有程序或服务与较新的 Windows Server 域控制器以及更高 Windows Server 域和林模式的兼容性。 使用实验室环境全面测试生产程序和服务的兼容性问题。 请联系供应商确认功能。

准备包含以下操作之一的回退计划:

  • 从林中的每个域断开至少两个域控制器的连接。
  • 从林中的每个域创建至少两个域控制器的系统状态备份。

在使用回退计划之前,必须在恢复过程之前停用林中的所有域控制器。

注意

无法权威地还原级别提升。 这意味着,复制级别提升的所有域控制器都必须停用。

解除所有以前的域控制器后,打开断开连接的域控制器或从备份还原域控制器。 从所有其他域控制器中删除元数据,然后重新编写它们。 这是一个艰难的过程,必须避免。

示例:如何从 Windows Server 2000 混合级别获取到 Windows Server 2003 林级别

将所有域增加到 Windows Server 2000 本机级别。 完成此操作后,将林根域的功能级别提高到 Windows Server 2003 林级别。 当林级别复制到林中每个域的 PDC 时,域级别会自动增加到 Windows Server 2003 域级别。 此方法具有以下优点:

  • 林范围的级别提升仅执行一次。 无需手动将林中的每个域增加到 Windows Server 2003 域功能级别。
  • 在级别提高之前执行 Windows Server 2000 域控制器检查 (请参阅) 准备步骤。 在删除或升级有问题的域控制器之前,将阻止增加。 可以通过列出阻止的域控制器并提供可操作的数据来生成详细报告。
  • 对 Windows Server 2000 混合或 Windows Server 2003 临时级别中的域执行检查。 在域级别至少增加到 Windows Server 2000 本机之前,将阻止增加。 必须将临时级别域增加到 Windows Server 2003 域级别。 可以通过列出阻止域来生成详细报告。

Windows NT 4.0 升级

Windows NT 4.0 升级在升级 PDC 期间始终使用临时级别,除非已将 Windows Server 2000 域控制器引入 PDC 升级到的林中。 在 PDC 升级期间使用临时模式时,现有大型组会立即使用 LVR 复制,从而避免本文前面讨论的潜在复制问题。 使用以下方法之一在升级期间进入过渡级别:

  • 在 Dcpromo 期间选择临时级别。 仅当 PDC 升级到新林时,才会显示此选项。
  • 将现有林的林级别设置为临时,然后在 PDC 升级期间加入林。 升级后的域继承林设置。
  • 升级或删除所有Windows NT 4.0 BDC 后,必须将每个域转换为林级别,并且可以转换为 Windows Server 2003 林模式。

避免使用临时模式的一个原因是,如果计划在升级后或将来的任何时间实现 Windows Server 2000 域控制器。

Windows NT 4.0 中大型组的特殊注意事项

在成熟的 Windows NT 4.0 域中,可能包含包含超过 5000 个成员的安全组。 在 Windows NT 4.0 中,当安全组的成员发生更改时,只会将成员身份单个更改复制到备份域控制器。 在 Windows Server 2000 中,组成员身份是存储在组对象的单个多值属性中的链接属性。 对组的成员身份进行单个更改时,整个组将作为单个单元进行复制。 由于组成员身份是作为单个单元复制的,因此,当在不同域控制器上同时添加或删除不同成员时,组成员身份的更新可能会“丢失”。 此外,此单个对象的大小可能大于用于将条目提交到数据库中的缓冲区。 有关详细信息,请参阅本文的“大型组的版本存储问题”部分。 出于这些原因,建议对组成员的限制为 5000。

5000 成员规则的例外是主组 (默认情况下,这是“域用户”组) 。 主组使用基于用户的“primarygroupID”的“计算”机制来确定成员身份。 主组不会将成员存储为多值链接属性。 如果用户的主组更改为自定义组,则其在“域用户”组中的成员身份将写入该组的链接属性,并且不再计算。 新的主组 Rid 将写入“primarygroupID”,用户将从组的成员属性中删除。

如果管理员未选择升级域的临时级别,则必须在升级之前执行以下步骤:

  1. 清点所有大型组,并确定超过 5000 个的任何组,域用户组除外。
  2. 成员数超过 5000 个的所有组必须分解为成员数小于 5000 的较小组。
  3. 找到输入大型组的所有访问控制 Lists,并添加在步骤 2 中创建的小组。Windows Server 2003 临时林级别使管理员无需发现并重新分配具有 5000 多个成员的全局安全组。

大型组的版本存储问题

在长时间运行的操作(如深度搜索或提交到单个大型属性)期间,Active Directory 必须确保数据库的状态是静态的,直到操作完成。 使用旧存储的大型组是深层搜索或提交到大型属性的一个示例。

由于对数据库的更新在本地和复制伙伴中不断进行,Active Directory 会通过排队等待所有传入的更改来提供静态状态,直到长时间运行的操作完成。 操作完成后,排队的更改将立即应用于数据库。

这些排队更改的存储位置称为“版本存储”,大约为 100 MB。 版本存储的大小各不相同,具体取决于物理内存。 如果长时间运行的操作在版本存储用完之前未完成,则域控制器将停止接受更新,直到长时间运行的操作和已排队的更改提交。 (超过 5000 个成员的组) 只要提交大型组,域控制器就面临耗尽版本存储的风险。

Windows Server 2003 为链接的多值属性引入了一种新的复制机制,该机制称为链接值复制 (LVR) 。 LVR 通过将每个组成员复制为单独的复制操作来解决此问题,而不是在单个复制操作中复制整个组。 当林功能级别提升到 Windows Server 2003 临时林级别或 Windows Server 2003 林级别时,LVR 将变为可用。 在此功能级别中,LVR 用于在 Windows Server 2003 域控制器之间复制组。