jueves, 3 de mayo de 2012

Nuevo problema al desfragmentar - JCB.DLL

Como ya pudimos compobar aquí:
http://elinformaticoinocente.blogspot.com.es/2012/04/desfragmentar-una-base-de-datos-de.html

en cada desfragmentación nos espera una "grata" sorpresa. Nuevamente procedí a conectarme un sábado por la mañana para proceder a la desfragmentación de la base de datos, ya que este proceso puede durar entre 7 y diez horas con un tamaño de unos 60Gb. Habiamos eliminado 3 buzones que ocupaban bastante y con una desfragmentación se lograría reducir algo la base de datos.
Aparentemente todo bien, de vez en cuando me iba "asomando" a ver como andaba el proceso hasta que, cuando llevaba un 10% de la base de datos desfragmentada, el proceso se interrumpe y me aparece uno de esos maravillosos mensaje que mandan a tomar por culo tu placentero sábado:

"Unable to find the callback library jcb.dll (or one of its dependencies).Copy in the file and hit OK to retry, or hit Cancel to abort".

El problema, tal como indica el mensaje, es que la dll 'jcb' está corrompida. Bien. Y yo me pregunto, ¿porque cojones se "corrompe" si no toco el servidor más que para hacer copias de seguridad y desfragmentar?. Nuevamente este lamento sólo queda para uno mismo; nadie te va a dar una explicación satisfactoria, por enésima vez, como una constante en la vida del informático, debes resolver un problema que no sabes por qué se ha producido.
Bien, puestos en situación lo que te queda es buscar en "San Google" otros "tontos" con el mismo problema. Lo primero que encuentras es la página de Microsoft referente a ello:

http://support.microsoft.com/kb/273087

Microsoft debería tener algún corrector/editor jefe como en los periódicos o revistas, porque la información que encuentras es tan evidente como idiota y poco útil. Básicamente te da dos soluciones:

1-Copiar de nuevo el archivo jcb.dll la carpeta Exchsrvr\Bin.
2-Cancelar la operación.

Sobre la segunda opción casi no tengo ganas de comentar lo estúpida que es. Sobre la primera (que se parece algo más a una solución) lo que no te dice es de dónde sacar la dll, ni como copiarla. Me explico, si consigues la dll (ahora veremos como), al intentar copiar al directorio Exchsrvr\Bin te dice que no es posible porque se está utilizando, y esto es lo que no te dice. Así que quizás la solución sería, o bien parar todos los servicios de Exchange y probar si se deja copiar, o entrar a modo a prueba de errores a ver si así se consigue. Tanto de una manera como de otra lo que hay que hacer despues es registrar dicha dll con un regsvr32. Esta solución es teórica, ya que no he tenido huevos a probarla. Para quien se aventure, el archivo jcb.dll, lo podemos sacar el cd de instalación de Exchange 2003 con un simple copiar y pegar. Se encuentran en la carpeta Setup/I386/Exchange/Bin.
Lo que en el articulo de Microsoft no explica es que lo que hay que hacer es crear el directorio Exchange\Bin en otra partición y copiar allí esta dll junto con los archivos Eseutil.exe, Ese.dll, Exosal.dll, y Exchmem.dll (tambien obtenidos del cd de instalación), con lo que, la realizar la desfragmentación, nos iremos a la herramienta "eseutil" contenida en este nuevo directorio en donde tenemos la dll jcb impoluta... hasta que se vuelva a joder de nuevo porque sí.
Otras lenguas comentan reinstalar el SP2 y así reestablecer esta dll y demás archivos. Nosé, no lo he probado ni ganas, ya me la jugué la primera vez que instalé el SP2 y salió bien, con lo que hacerlo de nuevo es tentar a la suerte.
Espero que esto le sirva a alguien de algo y a ver si puede arrojar algo de luz sobre el porqué suceden estas cosas.

2 comentarios:

  1. Una razon del error tambien pueden ser los temporales cuando el disco no tiene demasiado espacio, conviene usar /t"z:\xxxx.edb" para que cree estos en alguna unidad con espacio.
    salu2

    ResponderEliminar
  2. Muchas gracias por tu aporte, en principio hay espacio mas que suficiente, pero no está demás probarlo.
    Muchas gracias de nuevo por tu interés!!!.

    ResponderEliminar