您将一个过时的全局编录服务器重新联机后,可能会保留延迟对象

文章翻译 文章翻译
文章编号: 314282 - 查看本文应用于的产品
注意
本文适用于 Windows 2000。Windows 2000 支持的结束,到 2010 7 月 13Windows 2000 End-of-Support Solution Center 是进行规划迁移策略从 Windows 2000 的起始位置。有关详细信息,请参阅 Microsoft Support Lifecycle Policy
展开全部 | 关闭全部

本文内容

症状

域控制器或全局编录服务器的较长的时间已脱机,您将重新联机后,可能会发生任何以下问题:
  • 电子邮件邮件不传递到用户的域之间移动的用户对象。您将已过时的域控制器或全局编录服务器重新联机后,用户对象的两个实例都将出现在全局编录中。这两个对象具有相同的电子邮件地址,因此不能发送电子邮件。
  • 已不再存在的用户帐户仍会显示在全局地址列表中。
  • 已不再存在的通用组仍会显示在用户的访问令牌中。
如果域控制器或全局编录服务器已脱机时间超过了 tombstone 存留时间设置的值,则可能会出现这些问题。

原因

域控制器 (这可能也是全局编录服务器) 被脱机时间超过了 tombstone 存留时间的值的设置 (默认值是 60 天) 可能包含已在其他域控制器或全局编录服务器上删除的对象。此外,逻辑删除这些对象可能已不存在。当您使过时的域控制器重新联机时,它不能通知的对象删除操作。 如果该对象的任何修改了,则它们是域的其余部分重新激活。

对于复制到读/写命名上下文的延迟对象,标准行为 (松散的复制一致性) 是接收方的域控制器,重新创建已不存在本地数据库 (DIT) 中的对象。这些对象是然后复制回原始域控制器有效地重新创建已删除的对象。 如果对象应在所有 (例如,如果对象由一个过时的域控制器重新引入) 不存在在 Active Directory 中,您可以删除具有标准的工具 (如 ADSIEdit 或 Active Directory 用户和计算机管理单元) 对象。

可以很容易地删除延迟对象的读/写命名上下文。本文介绍如何删除延迟对象已经出现在全局编录 (以及因此是只读的) 中的命名上下文。 逻辑删除的问题有关的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
216993Active Directory 的系统状态备份的货位生命周期
命名上下文的读/写副本中的延迟对象的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
317097延迟对象防止问题发生的 Active Directory 复制

解决方案

服务包信息

若要解决此问题,获得最新的 service pack,对于 Windows 2000。有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
260910如何获取最新的 Windows 2000 service pack

修补程序信息

注意在安装此修补程序之前,读取整个的"更多信息"部分,在这篇文章中。在"更多信息"一节包含有关如何安装和使用此修补程序的重要信息。

此修补程序的英文版具有的文件属性 (或更新的文件属性) 在下表中列出。日期和时间对这些文件列出在协调世界时 (UTC)。当您查看文件信息时,将转换为本地时间。若要 UTC 与本地时间之间的时差使用控制面板中的日期和时间项中的 时区 选项卡。
   Date         Time   Version            Size    File name
   ------------------------------------------------------------
   16-Jan-2002  22:07  5.0.2195.4685     123,664  Adsldp.dll
   16-Jan-2002  22:07  5.0.2195.4762     130,320  Adsldpc.dll
   16-Jan-2002  22:07  5.0.2195.4016      62,736  Adsmsext.dll
   16-Jan-2002  22:07  5.0.2195.4797     356,112  Advapi32.dll
   16-Jan-2002  22:07  5.0.2195.4797      41,744  Basesrv.dll
   11-Dec-2001  03:33  5.0.2195.4571      82,704  Cmnquery.dll
   16-Jan-2002  22:07  5.0.2195.4141     133,904  Dnsapi.dll
   16-Jan-2002  22:07  5.0.2195.4379      91,408  Dnsrslvr.dll
   11-Dec-2001  03:33  5.0.2195.4534      41,744  Dsfolder.dll
   11-Dec-2001  03:33  5.0.2195.4534     156,944  Dsquery.dll
   11-Dec-2001  03:33  5.0.2195.4574     110,352  Dsuiext.dll
   16-Jan-2002  22:16  5.0.2195.4814     521,488  Instlsa5.dll
   16-Jan-2002  22:07  5.0.2195.4630     145,680  Kdcsvc.dll

   27-Nov-2001  01:33  5.0.2195.4680     199,440  Kerberos.dll
   16-Jan-2002  22:07  5.0.2195.4829     708,880  Kernel32.dll
   04-Sep-2001  17:32  5.0.2195.4276      71,024  Ksecdd.sys
   09-Jan-2002  19:50  5.0.2195.4814     503,568  Lsasrv.dll
   09-Jan-2002  19:50  5.0.2195.4814      33,552  Lsass.exe
   08-Dec-2001  01:05  5.0.2195.4745     107,280  Msv1_0.dll
   16-Jan-2002  22:07  5.0.2195.4594     306,960  Netapi32.dll
   16-Jan-2002  22:07  5.0.2195.4686     359,184  Netlogon.dll
   16-Jan-2002  22:07  5.0.2195.4797     476,432  Ntdll.dll
   16-Jan-2002  22:07  5.0.2195.4827     916,240  Ntdsa.dll
   15-Jan-2002  09:34  5.0.2195.4839   1,688,192  Ntkrnlmp.exe
   15-Jan-2002  09:36  5.0.2195.4839   1,687,744  Ntkrnlpa.exe
   15-Jan-2002  09:36  5.0.2195.4839   1,708,480  Ntkrpamp.exe
   15-Jan-2002  09:34  5.0.2195.4839   1,665,856  Ntoskrnl.exe
   16-Jan-2002  22:07  5.0.2195.4827     388,368  Samsrv.dll
   16-Jan-2002  22:07  5.0.2195.4583     128,784  Scecli.dll
   16-Jan-2002  22:07  5.0.2195.4600     299,792  Scesrv.dll
   16-Jan-2002  22:07  5.0.2195.4600      48,400  W32time.dll
   06-Nov-2001  20:43  5.0.2195.4600      56,592  W32tm.exe
   16-Jan-2002  22:07  5.0.2195.4827     125,712  Wldap32.dll
				
注意此修补程序已被一个累积修补程序取代。 有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
326797某些 Windows 2000 活动目录的修复程序可能与 Windows 2000 的 S326797 导致冲突

状态

Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。 Windows 2000 Service Pack 3 中,第一次已得到纠正此问题。

更多信息

此修补程序增加了对删除延迟对象的支持。 本过程需要具有对象的读/写副本的域控制器的 objectGUID 和对象本身的 objectGUID。如果必须移除多个对象,确定的任何对象是否在父/子关系 (可以从对象的可分辨名称确定此)。这是否大小写进行排序对删除内容,以便在其父对象之前删除所有的子对象。

要识别在哪个域对象的位置 (以及从它以确定对象的读/写副本的域控制器的名称) 中,最佳方法是建立在对象的可分辨的名称。您可以通过使用 Ldp.exe 工具从这些支持工具来搜索重复的用户、 组或通讯组列表的名称 (或名称的部分) 执行此操作:
  1. 启动 Ldp.exe。
  2. 连接 菜单上单击 连接
  3. 键入一个全局编录的名称。键入要连接到端口 3268。单击 确定
  4. 连接 菜单上单击 绑定。如果当前凭据不足要查询的所有全局编录内容,请输入有效的凭据。单击 确定
  5. 视图 菜单上单击 $ 。键入林根的可分辨的名称。单击 确定
  6. 用鼠标右键单击林根树列表中的,然后单击 搜索
  7. 创建以下窗体的一个筛选器,请执行下列操作:
    ([attribute] = [value])
    代入合适的数据,[attribute] 和 [value]。 例如对于进行返回的结果,sAMAccountName 属性都有一个值,它设置为用户帐户名为"testuser"筛选器键入 (sAMAccountName=testuser)筛选 框中。 cnuserPrincipalNamesAMAccountName名称、 该 邮件sn 属性是很好的候选查找用户对象。组对象的使用 cnsAMAccountName,或 名称。请注意您可以使用星号 (*) [value] 字段中有必要。

    轻型目录访问协议 (LDAP) 筛选器语法的详细信息,请访问下面的 Microsoft 网站:
    http://msdn2.microsoft.com/en-us/library/aa746475.aspx
  8. 单击作为搜索范围的 子树
  9. 单击 选项。在 搜索选项 对话框中移动到末尾的属性控件。
  10. objectGUID ; 追加到列表中。 单击 确定
  11. 单击 $ 运行 以运行查询。
  12. 查看结果。您必须确定哪种显示的对象应从全局编录中删除。您已找到一个不正确的对象的一个指示是在读/写命名上下文的副本上不存在的对象。
  13. 如果需要改写查询,然后重新运行它。
  14. 如果确定延迟对象注意其可分辨的名称和 objectGUID。
获取该对象的可分辨的名称之后,标识在其中它位于通过查看的域在"dc ="的可分辨名称的一部分。例如对于域的 cn = FirstName LastName,cn = 用户,dc = name1,dc = name2,dc = com 是 name1name2 com。接下来,查找域控制器的域 (也可以是全局编录服务器)。

运行 repadmin /showreps dc-name 的命令 (其中 dc-name 是您的域控制器的名称)。Repadmin.exe 将包含在支持工具。从输出中,请注意域控制器的 objectGuid:
C:\>repadmin /showreps 某些 DC
您 Site\some DC
DSA 选项: (无)
objectGuid: d1fa2207-ae85-466f-88fd-908f1c623ea7
在这篇文章中的所有具有延迟对象的全局编录服务器上安装描述的修复程序。此修补程序不需要在域控制器上这也是全局编录服务器包含延迟对象,除非标识为包含延迟的对象的读/写副本。您要在其运行删除操作的每个全局编录服务器必须具有您确定了对域控制器的网络连接。

为几个对象

如果您有只有几个对象和全局编录,请按照下列步骤可以删除该对象,通过使用 Ldp.exe 操作:
  1. 通过使用企业管理员凭据登录到每个全局编录服务器的已安装此修补程序 (和包含的延迟对象的副本)。
  2. 启动 Ldp.exe 并连接到本地域控制器 (将保留在 服务器 框为空) 上的端口 389。
  3. 连接 菜单上单击 绑定。将所有的复选框为空 (您已经登录为企业管理员)。
  4. 浏览 菜单上单击 修改
  5. Dn 框保留为空。
  6. 属性 框中键入 RemoveLingeringObject
  7. 类型 < GUID = 作为值。
  8. 追加您获得命令 repadmin /showreps dcname 从前面的域控制器的 GUID。

    注意在此的示例 dcname 是承载延迟对象的可写的命名上下文的域控制器。
  9. 追加 >: < GUID =. 不忽略空格。
  10. 追加延迟对象的 GUID。
  11. 追加 >.
  12. 完成值看起来应类似于:
    <GUID=85dd0fee-de1b-461c-b9c0-27e9e8249484>: <GUID=eeeb70e5-4501-4895-a572-94a87e8f8ac7>
  13. 单击 替换 操作,然后单击在接口上的 Enter。现在,该命令将显示在 列表中。
  14. 单击 $ 运行 以运行该请求。Ldp.exe 窗口的右侧包含请求的结果。它看起来应类似于这样:
    *** 修改调用...
    ldap_modify_s (ld (null),[1] attrs) ;
    修改""。

对于许多对象

如果您要删除的许多对象和多个全局编录服务器,它可能会更易于使用以下脚本:
  1. 将下面以下文本粘贴到一个名为 Walkservers.cmd 在新的文件夹中的新文件中:
    / f 为 %%1 (服务器 list.txt) 在执行 walkobjects
  2. 将以下文本粘贴到一个名为 Walkobjects.cmd 的文件:
    / f 为"delims = @"%%1 在 (对象 list.txt) 执行 cscript //NoLogo MODIFYROOTDSE.VBS %1"%%i">> update-%1.log


    注意这是一个命令行。为便于阅读此处插入分行符。
  3. 将以下文本粘贴到一个名为 Modifyrootdse.vbs 的文件:
    '********************************************************************
    '*
    '* File:        MODIFYROOTDSE.VBS
    '* Created:     January 2002
    '* Version:     1.0
    '*
    '* Main Function: Writes Active Directory information to clean up 
    '* objects as per: Q314282.
    '* Usage: Modifyrootdse.vbs <TargetServer> <GUID PAIR>
    '* Parameter are fed into the script using a pair of batch files.
    '*
    '* Copyright (C) 2002 Microsoft Corporation
    '*
    '********************************************************************
    
    OPTION EXPLICIT
    ON ERROR RESUME NEXT
    
    Dim objDomain
    Dim ObjValue, strServerName, adsLdapPath 
    Dim i
    
    'Get the command-line arguments
        if Wscript.arguments.count <> 2 Then
         Print "Invalid Number of Parameters. Use with WalkServers.CMD and WalkObjects.CMD"
        WScript.quit
    End If
    
        strServerName = Wscript.arguments.item(0)
        ObjValue = Wscript.arguments.item(1)
    
        adsLdapPath = "LDAP://" & strServerName & "/RootDSE"
    
        Set objDomain = GetObject(adsLdapPath)
        If Err.Number <> 0 Then
            WScript.Echo "Error opening ROOTDSE. Error number is: " & Err.Number & ". Error description is: " & Err.Description & "."
        Set objDomain = Nothing
            WScript.quit
        End If
    
        objDomain.Put "RemoveLingeringObject", ObjValue
        objDomain.Setinfo
    
        If Err.Number = 0 Then
           WScript.Echo "Object " & ObjValue & " was removed."
    Else
           WScript.Echo "Object " & ObjValue & " could not be removed. Error number is: " & Err.Number & ". Error description is: " & Err.Description & "."
        End If
    WScript.Quit
    						
    : 如果您手动启动 Modifyrootdse.vbs,请确保将括在引号中包含空格的任何参数。

  4. 创建的所有全局编录服务器包含延迟对象的列表。服务器名放在同一文件夹中的服务器 list.txt 文件中。使用完全限定的域名,以避免 DNS 后缀搜索。
  5. 将在前面的步骤中您获得的 GUID 对添加到对象 list.txt 文件中。添加一个对每行。使用以下语法:
    <GUID = DC GUID >: < GUID = 对象 GUID >
    示例项看起来类似于以下内容:
    <GUID=85dd0fee-de1b-461c-b9c0-27e9e8249484>: <GUID=eeeb70e5-4501-4895-a572-94a87e8f8ac7>
    此处,第一个值是用于确认原始对象不再存在的可写域控制器的 GUID。第二个值是要删除延迟对象的 GUID。
  6. 运行走 servers.cmd 文件。这些脚本生成的 Server-list.txt 文件中列出的每个全局编录服务器名为 Update-server-name.log 日志文件。这些日志文件包含要删除的每个对象的行。
请注意错误日志文件中并不一定表示出现问题因为延迟对象可能不存在所有全局编录服务器上。但是的窗体"操作被拒绝"或"操作错误"错误信息,指出该 guid 或值的语法有问题。如果发生这些错误,验证这些项:
  • 请确保域控制器 guid 都包含一个可写副本,包含该对象的域的域控制器的正确的 guid。
  • 请确保对象 guid 标识在全局编录 (只读) 的命名上下文中的延迟对象。
  • 验证安装了此修补程序上的所有域控制器和全局编录服务器,您在此过程中使用。验证在安装此修补程序之后,重新启动服务器。

错误消息,当运行 Walkservers.cmd 修改在环境中的许多延迟对象

对象 <GUID=ae856ce5-839a-4e44-b2fb-f37082ca2555>: 不能删除 <GUID=514f7510-451a-4297-8129-9b4c8ab79axx>。错误号是:-2147016672。错误说明是:。

原因

出现此错误的原因是该脚本运行的域控制器不包含可写的分区包含的延迟对象的 GUID。 由 Ldp.exe 工具验证延迟对象的位置。

示例

在下面的示例中,从而导致错误消息将被删除延迟对象位于 corp.company.local 域。 但是,从对象 list.txt 文件 <GUID=ae856ce5-839a-4e44-b2fb-f37082ca2555> 是没有可写的分区为 corp.company.local company.local 域中的域控制器与相关联。
ldap_search_s(ld, "DC=company,DC=local", 2, "(cn=User*)", attrList,  0, &msg)
Result <0>: (null)
Matched DNs: 
Getting 4 entries:
>> Dn: CN=User\, Joe,OU=Exec,OU=Corporate Users,DC=corp,DC=company,DC=local
	1> canonicalName: corp.company.local/Corporate Users/Exec/User, Joe; 
	1> cn: User, Joe; 
	1> description: CEO; 
	1> displayName: User, Joe; 
	1> distinguishedName: CN=User\, Joe,OU=Exec,OU=Corporate Users,DC=corp,DC=company,DC=local; 
	4> objectClass: top; person; organizationalPerson; user; 
	1> objectGUID: 814226ed-3414-4193-b96d-3a5ea4bf9351; 
	1> name: User, Joe; 
>> Dn: CN=User\, Joe,OU=Migration,DC=corp,DC=company,DC=local
	1> canonicalName: corp.company.local/Migration/User, Joe; 
	1> cn: User, Joe; 
	1> description: Disabled Account; 
	1> displayName: User, Joe; 
	1> distinguishedName: CN=User\, Joe,OU=Migration,DC=corp,DC=company,DC=local; 
	4> objectClass: top; person; organizationalPerson; user; 
	1> objectGUID: 514f7510-451a-4297-8129-9b4c8ab79axx; 
	1> name: User, Joe; 
通过运行以下命令获取 corp.company.local 域中服务器的 GUID:
repadmin /showreps DC-name
在此命令 DC-name 是 corp.company.local 域中的域控制器的名称的占位符。 更改以匹配 corp.company.local 域中域控制器的 GUID GUID 对象 list.txt 文件中。 在此的示例对象 list.txt 文件将显示为:
<GUID=c4fd9c30-b433-40a1-a862-9fdf1f804dc8> : <GUID=514f7510-451a-4297-8129-9b4c8ab79a7c>
第一个 GUID 是 corp.company.local 域中域控制器的 GUID。 第二个 GUID 是从轻型目录访问协议 (LDAP) 搜索延迟对象的 GUID。

您在运行走 servers.cmd 时该命令将现在成功完成无-2147016672 错误。

如果使用这些方法无法解决该错误日志文件中的,您可能遇到一个不同的问题。以获得更多的帮助联系 Microsoft 产品支持服务。

有关如何获取修补程序的 Windows 2000 数据中心服务器的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
265173数据中心计划和 Windows 2000 数据中心服务器产品
有关如何一次重新启动时安装多个修复程序的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
296861如何通过只重新启动一次安装多个 Windows 更新或修补程序
有关如何一次安装 Windows 2000 和 Windows 2000 修补程序的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
249149安装 Microsoft Windows 2000 和 Windows 2000 修补程序

属性

文章编号: 314282 - 最后修改: 2007年3月29日 - 修订: 8.7
这篇文章中的信息适用于:
  • Microsoft Windows 2000 Server SP1
  • Microsoft Windows 2000 Server SP2
  • Microsoft Windows 2000 Service Pack 3
  • Microsoft Windows 2000 Server SP4
  • Microsoft Windows 2000 Advanced Server SP1
  • Microsoft Windows 2000 Advanced Server SP2
  • Microsoft Windows 2000 Advanced Server SP3
  • Microsoft Windows 2000 Advanced Server SP4
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Server
关键字:?
kbmt kbhotfixserver kbqfe kbbug kbdirservices kbfix kbwin2000presp3fix kbwin2000sp3fix KB314282 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 314282
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com