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

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

适用于: Windows Server 2003
原始 KB 数: 322692

总结

有关 Windows Server 2016 和 Active Directory 域服务(AD DS)中的新功能的信息,请参阅 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 数据的存储。

启用域和林功能级别的最常见方法是使用 TechNet 文章中记录的有关 Windows Server 2003 Active Directory 功能级别的图形用户界面(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 属性位于 Configuration 命名上下文 (NC) 中的 CN=Partitions 对象上,即 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 History、在安全组和通讯组之间转换组,可以通过增加林级别设置来提升域级别

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 DC 不会立即升级。
  • 包含成员超过 5000 个(不包括域用户组)的组的 Windows NT 4.0 域。
  • 没有任何计划随时在林中实现 Windows Server2000 域控制器。

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

  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) 工具手动配置林功能级别。

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

  3. 使用 LDAP 工具升级后。

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

最佳做法

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

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

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

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

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

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

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

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

  7. Enter 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 NT 4.0 DC 的缺失是满足 Windows Server 2000 本机级别或更高版本上所有域的林级别要求所暗示的。

示例:在级别增加之前准备任务

在此示例中,环境从 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 DC 后,必须将每个域转换为林级别,并且可以转换为 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. 找到输入大型组的所有访问控制列表,并添加在步骤 2.Windows Server 2003 临时林级别中创建的小型组,使管理员无需发现并重新分配包含 5000 多个成员的全局安全组。

大型组的版本存储问题

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

由于数据库更新在本地和从复制合作伙伴持续发生,Active Directory 会通过排队所有传入的更改来提供静态状态,直到长时间运行的操作完成。 操作完成后,排队的更改将应用到数据库。

这些排队更改的存储位置称为“版本存储”,大约为 100 兆字节。 版本存储的大小因物理内存而异。 如果在版本存储耗尽之前长时间运行的操作未完成,则域控制器将停止接受更新,直到长时间运行的操作和排队的更改提交。 达到大量(超过 5000 个成员)的组使域控制器有可能耗尽版本存储,只要提交大型组。

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