Los objetos persistentes pueden permanecer después de poner de nuevo en conexión un servidor de catálogo global desfasado

Seleccione idioma Seleccione idioma
Id. de artículo: 314282 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Después de volver a poner en conexión un controlador de dominio o un servidor de catálogo global que ha estado desconectado durante mucho tiempo, puede producirse cualquiera de los problemas siguientes:
  • No se entregan mensajes de correo electrónico a un usuario cuyo objeto de usuario se ha movido entre dominios. Tras poner de nuevo en conexión el controlador de dominio o el servidor de catálogo global desfasado, aparecen ambas instancias del objeto de usuario en el catálogo global. Ambos objetos tienen la misma dirección de correo electrónico, por lo que los mensajes de correo electrónico no se pueden entregar.
  • En la lista global de direcciones sigue apareciendo una cuenta de usuario que ya no existe.
  • Un grupo universal que ya no existe sigue existiendo en el símbolo de acceso de un usuario.
Estos problemas pueden producirse cuando el controlador de dominio o el servidor de catálogo global ha estado sin conexión durante más tiempo del establecido en el valor de Objetos de desecho.

Causa

Un controlador de dominio (que también puede ser un servidor de catálogo global) que estuvo sin conexión durante más tiempo del valor configurado para el valor Objetos de desecho (el valor predeterminado es 60 días) puede contener objetos que se hayan eliminado en otros controladores de dominio o en servidores de catálogo global. Además, puede que ya no existan valores de desecho para estos objetos. Cuando vuelve a poner en conexión el controlador de dominio desfasado, no se pueden notificar las eliminaciones de objetos. Si se modifica alguno de los objetos, se reactivan en el resto del dominio.

En los objetos persistentes que se replican en los contextos de nomenclatura de lectura/escritura, el comportamiento estándar (coherencia de replicación no estricta) consiste en que el controlador de dominio receptor vuelva a crear los objetos que no están ya presentes en la base de datos local (DIT). Estos objetos se vuelven a replicar después en el controlador de dominio originario, recreando efectivamente los objetos eliminados. Si el objeto no existiera en Active Directory (por ejemplo, si el objeto fue reintroducido por un controlador de dominio desfasado), puede eliminar los objetos con las herramientas estándar (como ADSIEdit o el complemento Usuarios y equipos de Active Directory).

Es fácil quitar los objetos persistentes en los contextos de nomenclatura de lectura y escritura. En este artículo se describe cómo quitar los objetos persistentes que ya han aparecido en los contextos de nomenclatura de catálogo global (y, por tanto, de sólo lectura). Para obtener más información acerca de los problemas de los objetos de desecho, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
216993 Vida útil de una estantería de una copia de seguridad del sistema de Active Directory
Para obtener más información acerca de los objetos persistentes en las copias de lectura y escritura de los contextos de nomenclatura, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
317097 Los objetos persistentes impiden que se produzca la replicación de Active Directory

Solución

Información de Service Pack

Para resolver este problema, obtenga el Service Pack más reciente para Windows 2000. Para obtener más información al respecto, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
260910 Cómo obtener el Service Pack más reciente para Windows 2000

Información de hotfix

Nota: antes de instalar este hotfix, lea en este artículo la sección "Más información". La sección "Más información" contiene información importante acerca de cómo instalar y usar este hotfix.

La versión en inglés de este hotfix tiene los atributos de archivo mostrados en la siguiente tabla (u otros posteriores). Las fechas y las horas de estos archivos se muestran según el horario universal coordinado (UTC). La información de los archivos se convertirá a la hora local cuando la vea. Para ver la diferencia entre la hora UTC y la hora local, utilice la ficha Zona horaria del elemento Fecha y hora del Panel de control.
Contraer esta tablaAmpliar esta tabla
FechaHoraVersiónTamañoNombre de archivo
16-Ene-200222:075.0.2195.4685123.664Adsldp.dll
16-Ene-200222:075.0.2195.4762130.320Adsldpc.dll
16-Ene-200222:075.0.2195.401662.736Adsmsext.dll
16-Ene-200222:075.0.2195.4797356.112Advapi32.dll
16-Ene-200222:075.0.2195.479741.744Basesrv.dll
11-Dic-200103:335.0.2195.457182.704Cmnquery.dll
16-Ene-200222:075.0.2195.4141133.904Dnsapi.dll
16-Ene-200222:075.0.2195.437991.408Dnsrslvr.dll
11-Dic-200103:335.0.2195.453441.744Dsfolder.dll
11-Dic-200103:335.0.2195.4534156.944Dsquery.dll
11-Dic-200103:335.0.2195.4574110.352Dsuiext.dll
16-Ene-200222:165.0.2195.4814521.488Instlsa5.dll
16-Ene-200222:075.0.2195.4630145.680Kdcsvc.dll
27-Nov-200101:335.0.2195.4680199.440Kerberos.dll
16-Ene-200222:075.0.2195.4829708.880Kernel32.dll
04-Sep-200117:325.0.2195.427671.024Ksecdd.sys
09-Ene-200219:505.0.2195.4814503.568Lsasrv.dll
09-Ene-200219:505.0.2195.481433.552Lsass.exe
08-Dic-200101:055.0.2195.4745107.280Msv1_0.dll
16-Ene-200222:075.0.2195.4594306.960Netapi32.dll
16-Ene-200222:075.0.2195.4686359.184Netlogon.dll
16-Ene-200222:075.0.2195.4797476.432Ntdll.dll
16-Ene-200222:075.0.2195.4827916.240Ntdsa.dll
15-Ene-200209:345.0.2195.48391.688.192Ntkrnlmp.exe
15-Ene-200209:365.0.2195.48391.687.744Ntkrnlpa.exe
15-Ene-200209:365.0.2195.48391.708.480Ntkrpamp.exe
15-Ene-200209:345.0.2195.48391.665.856Ntoskrnl.exe
16-Ene-200222:075.0.2195.4827388.368Samsrv.dll
16-Ene-200222:075.0.2195.4583128.784Scecli.dll
16-Ene-200222:075.0.2195.4600299.792Scesrv.dll
16-Ene-200222:075.0.2195.460048.400W32time.dll
06-Nov-200120:435.0.2195.460056.592W32tm.exe
16-Ene-200222:075.0.2195.4827125.712Wldap32.dll
Nota: este hotfix ha sido sustituido por una revisión del paquete de continuación. Para obtener más información al respecto, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
326797 Algunos hotfix de Active Directory de Windows 2000 pueden causar un conflicto con S326797 para Windows 2000

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:". Este problema se corrigió por primera vez en el Service Pack 3 de Windows 2000.

Más información

Este hotfix aumenta el soporte para quitar objetos persistentes. Este procedimiento requiere el objectGUID de un controlador de dominio que tiene una copia de lectura y escritura del objeto, así como el objectGUID del propio objeto. Si debe quitar más de un objeto, determine si cualquiera de los objetos está en una relación principal/secundaria (puede averiguarlo a partir de los nombres completos de los objetos). Si es así, hay que pedir las eliminaciones, de manera que todos los objetos secundarios se eliminen antes que sus objetos principales.

La mejor manera de identificar en qué dominio está ubicado un objeto (para determinar desde ahí del nombre de un controlador de dominio que tiene una copia de lectura y escritura del objeto) es establecer el nombre completo del objeto. Puede hacerlo buscando el nombre (o partes del nombre) del usuario duplicado, grupo o lista de distribución utilizando la herramienta Ldp.exe de las Herramientas de soporte técnico:
  1. Inicie Ldp.exe.
  2. En el menú Connection, haga clic en Connect.
  3. Escriba el nombre de un catálogo global. Escriba 3268 como el puerto al que se conecta. Haga clic en OK.
  4. En el menú Connection, haga clic en Bind. Escriba credenciales válidas si las actuales no son suficientes para consultar todo el contenido del catálogo global. Haga clic en OK.
  5. En el menú View, haga clic en Tree. Escriba el nombre completo de la raíz del bosque. Haga clic en OK.
  6. Haga clic con el botón secundario en la raíz del bosque de la lista de árbol y, después, haga clic en Search.
  7. Cree un filtro de la manera siguiente:
    ([atributo]=[valor])
    Sustituya los datos adecuados para [atributo] y [valor]. Por ejemplo, para crear un filtro que devuelva resultados donde el atributo sAMAccountName tiene un valor que está establecido en una cuenta de usuario denominada "testuser", escriba (sAMAccountName=testuser) en el cuadro Filter. Los atributos cn, userPrincipalName, sAMAccountName, name, mail y sn son buenos candidatos para encontrar un objeto de usuario. Para los objetos de grupo, utilice cn, sAMAccountName o name. Tenga en cuenta que puede utilizar asteriscos (*) en el campo [valor] si es necesario.

    Para obtener más información acerca de la sintaxis de filtro del Protocolo ligero de acceso a directorios (LDAP), visite el siguiente sitio Web de Microsoft:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/search_filter_syntax.asp
  8. Haga clic en Subtree como el ámbito de búsqueda.
  9. Haga clic en Options. En el cuadro de diálogo Search Options, vaya al final del control Attributes.
  10. Anexe objectGUID; a la lista. Haga clic en OK.
  11. Haga clic en Run para ejecutar la consulta.
  12. Vea los resultados. Debe identificar cuál de los objetos mostrados debe quitarse del catálogo global. Una indicación de que ha encontrado un objeto erróneo es que el objeto no existe en una copia de lectura y escritura del contexto de nomenclatura.
  13. Si es necesario, reformule la consulta y ejecútela de nuevo.
  14. Si ha identificado el objeto persistente, anote su nombre completo y objectGUID.
Después de obtener el nombre completo del objeto, identifique el dominio en el que se encontró examinando la parte "dc=" del nombre completo. Por ejemplo, el dominio de cn=Nombre Apellido,cn=Users,dc=nombre1,dc=nombre2,dc=com es nombre1.nombre2.com. Después, busque un controlador de dominio para el dominio (también puede ser un servidor de catálogo global).

Ejecute el comando repadmin /showreps nombreCd (donde nombreCd es el nombre del controlador de dominio que encontró). Repadmin.exe se incluye en las Herramientas de soporte técnico. De los resultados, anote el objectGuid del controlador de dominio:
C:\>repadmin /showreps some-DC
Your-Site\some-DC
DSA Options : (none)
objectGuid : d1fa2207-ae85-466f-88fd-908f1c623ea7
Instale el hotfix que se describe en este artículo en todos los servidores de catálogo global que tengan objetos persistentes. El hotfix no se requiere en los controladores de dominio que identificó que contenían copias de lectura y escritura de los objetos persistentes, a menos que sean servidores de catálogo global que contengan objetos persistentes. Cada servidor de catálogo global en el que piense ejecutar la operación de eliminación debe tener conexión de red con el controlador de dominio que identificó.

Para pocos objetos

Si sólo tiene algunos objetos y catálogos globales, siga estos pasos para eliminar los objetos utilizando Ldp.exe:
  1. Inicie sesión en cada servidor de catálogo global que tenga instalado el hotfix (y que contenga una copia del objeto persistente) utilizando credenciales de Administrador de organización.
  2. Inicie Ldp.exe y conecte con el puerto 389 en el control de dominio local (deje en blanco el cuadro Server).
  3. En el menú Connection, haga clic en Bind. Deje en blanco todos los cuadros (ya ha iniciado sesión como Administrador de organización).
  4. En el menú Browse, haga clic en Modify.
  5. Deje en blanco el cuadro Dn.
  6. En el cuadro Attribute, escriba RemoveLingeringObject.
  7. Escriba <GUID= como valor.
  8. Anexe el GUID del controlador de dominio que obtuvo desde el comando repadmin /showreps nombreCd anteriormente.

    Nota: en este ejemplo, nombreCd es un controlador de dominio que aloja el contexto de nomenclatura grabable del objeto persistente.
  9. Anexe > : <GUID=. No omita los espacios en blanco.
  10. Anexe el GUID del objeto persistente.
  11. Anexe >.
  12. El valor completo debe ser similar a:
    <GUID=85dd0fee-de1b-461c-b9c0-27e9e8249484> : <GUID=eeeb70e5-4501-4895-a572-94a87e8f8ac7>
  13. Haga clic en la operación Replace y, a continuación, haga clic en Enter en la interfaz. Ahora el comando aparecerá en la lista Entry.
  14. Haga clic en Run para ejecutar la solicitud. El lado derecho de la ventana Ldp.exe contiene el resultado de la solicitud. Debe ser similar a esto:
    ***Call Modify...
    ldap_modify_s(ld, '(null)',[1] attrs);
    Modified "".

Para muchos objetos

Si tiene muchos objetos que eliminar y muchos servidores de catálogo global, puede ser más sencillo usar las secuencias de comandos siguientes:
  1. Pegue el texto siguiente en un nuevo archivo denominado Walkservers.cmd de una carpeta nueva:
    for /f %%j in (server-list.txt) do walkobjects %%j
  2. Pegue el texto siguiente en un archivo denominado Walkobjects.cmd:
    for /f "delims=@" %%i in (object-list.txt) do cscript //NoLogo MODIFYROOTDSE.VBS %1 "%%i" >>update-%1.log


    Nota: es una sola línea de comandos. Los saltos de línea se han insertado aquí para mejorar la legibilidad.
  3. Pegue el texto siguiente en un archivo denominado 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
    						
    NOTA: si inicia Modifyrootdse.vbs manualmente, no olvide poner entre comillas cualquier parámetro que contenga espacios en blanco.

  4. Cree una lista de todos los servidores de catálogo global que contienen los objetos persistentes. Ponga los nombres de servidor en un archivo de la misma carpeta denominado Server-list.txt. Use los nombres de dominio completos para evitar búsquedas de sufijos DNS.
  5. Agregue las parejas de GUID que obtuvo antes en este procedimiento a un archivo Object-list.txt. Agregue un par por línea. Utilice la sintaxis siguiente:
    <GUID = DC GUID> : <GUID = GUID de objeto>
    Una entrada de ejemplo es similar a lo siguiente:
    <GUID=85dd0fee-de1b-461c-b9c0-27e9e8249484> : <GUID=eeeb70e5-4501-4895-a572-94a87e8f8ac7>
    Aquí, el primer valor es el GUID del controlador de dominio grabable que se utiliza para confirmar que el objeto original ya no existe. El segundo valor es el GUID del objeto persistente que se va a quitar.
  6. Ejecute el archivo Walk-servers.cmd. Las secuencias de comandos generan un archivo de registro denominado Update-nombreDeServidor.log para cada servidor de catálogo global que se muestra en el archivo Server-list.txt. Los archivos de registro contienen una línea por cada objeto que se va a eliminar.
Tenga en cuenta que los errores de los archivos de registro no indican necesariamente un problema, ya que los objetos persistentes pueden no existir en todos los servidores de catálogo global. Sin embargo, los mensajes de error de tipo "operación rechazada" o "error de operación" ("operation refused" u "operation error") indican un problema con los GUID o con la sintaxis del valor. Si se producen estos problemas, compruebe lo siguiente:
  • Compruebe que los GUID del controlador de dominio sean los GUID correctos para los controladores de dominio que contienen una copia grabable del dominio que contiene el objeto.
  • Compruebe que los GUID de objeto identifican los objetos persistentes de los contextos de nomenclatura del catálogo global (sólo lectura).
  • Compruebe que el hotfix está instalado en todos los controladores de dominio y servidores de catálogo global que usa en este procedimiento. Compruebe que reinició los servidores después de instalar el hotfix.

Mensaje de error cuando ejecuta Walkservers.cmd para modificar muchos objetos persistentes del entorno

Object <GUID=ae856ce5-839a-4e44-b2fb-f37082ca2555> : <GUID=514f7510-451a-4297-8129-9b4c8ab79axx> could not be removed. Error number is: -2147016672. Error description is: .

Causa

: este error se produce porque la secuencia de comandos se ejecuta en el GUID de un controlador de dominio que no contiene una partición grabable que contenga el objeto persistente. Compruebe la ubicación del objeto persistente mediante la herramienta Ldp.exe.

Ejemplo

En el ejemplo siguiente, el objeto persistente que hace que se quite el mensaje de error está ubicado en el dominio corp.company.local. Sin embargo, <GUID=ae856ce5-839a-4e44-b2fb-f37082ca2555>, del archivo objects-list.txt, está asociado a un controlador de dominio del dominio company.local que no tiene una partición grabable para corp.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; 
Obtenga el GUID de un servidor del dominio corp.company.local ejecutando el comando siguiente:
repadmin /showreps nombreCd
En este comando, nombreCd es un marcador de posición para el nombre de un controlador de dominio del dominio corp.company.local. Cambie el GUID del archivo Objects-list.txt para que coincida con el GUID del controlador de dominio del dominio corp.company.local. En este ejemplo, el archivo Objects-list.txt aparecerá como:
<GUID=c4fd9c30-b433-40a1-a862-9fdf1f804dc8> : <GUID=514f7510-451a-4297-8129-9b4c8ab79a7c>
El primer GUID es el del controlador de dominio del dominio corp.company.local. El segundo es el GUID del objeto persistente de la búsqueda del Protocolo ligero de acceso a directorios (LDAP).

Cuando ejecute Walk-servers.cmd, el comando se completará ahora correctamente, sin el error -2147016672.

Si no puede resolver los errores de los archivos de registro utilizando estos métodos, puede que esté experimentando un problema diferente. Póngase en contacto con los Servicios de soporte técnico de Microsoft para obtener más ayuda.

Para obtener más información acerca de cómo obtener un hotfix para Windows 2000 Datacenter Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
265173 El programa Datacenter y el producto Windows 2000 Datacenter Server
Para obtener más información acerca de cómo instalar varios hotfix con un único reinicio, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
296861 Cómo instalar varias actualizaciones o revisiones con un único reinicio
Para obtener más información acerca de cómo instalar Windows 2000 y los hotfix de Windows 2000 al mismo tiempo, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
249149 Instalar Microsoft Windows 2000 y revisiones para Windows 2000

Propiedades

Id. de artículo: 314282 - Última revisión: miércoles, 5 de enero de 2011 - Versión: 2.0
La información de este artículo se refiere a:
  • Microsoft Windows 2000 Professional Edition
Palabras clave: 
kbhotfixserver kbqfe kbbug kbdirservices kbfix kbwin2000presp3fix kbwin2000sp3fix KB314282

Enviar comentarios

 

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