Skip to content

Windows.edb en dirty shutdown: recupéralo con esentutl

Por qué un Windows.edb adquirido está en dirty shutdown, cómo comprobarlo con esentutl /mh y cómo reproducir los registros MSS con esentutl /r en una copia.

Publicado el 6 min de lectura

En resumen. Un Windows.edb copiado desde un sistema en marcha casi siempre está en estado dirty shutdown: algunos cambios confirmados solo están todavía en los registros de transacciones MSS*.log. Compruébalo con esentutl /mh Windows.edb. Para obtener una base coherente, copia la carpeta entera (base, MSS*.log, MSS.chk) a un directorio de trabajo, entra en él con cd y ejecuta esentutl /r MSS /d. El /d es clave: sin él, esentutl busca la base en el directorio registrado en los propios registros, es decir, la ubicación original. Analiza tanto la copia en bruto como la recuperada si la diferencia puede importar. No ejecutes nunca la recuperación sobre la evidencia original.

Qué significa «dirty shutdown»

ESE escribe cada cambio en su registro de transacciones antes de actualizar el archivo de base. Cuando el motor se detiene correctamente, lo vuelca todo en la base y marca la cabecera como clean shutdown. Cuando el archivo se copia con el motor en marcha, o la máquina pierde la alimentación, la cabecera sigue diciendo dirty shutdown. A las páginas de la base les pueden faltar cambios que solo existen en los registros. Microsoft describe este diseño de recuperación en su presentación de ESE; el concepto general está en el glosario.

En Windows Search los archivos son:

ArchivoFunción
Windows.edbLa base
MSS.logRegistro de transacciones actual
MSSxxxxx.log (número de generación hexadecimal)Generaciones anteriores de registros que aún se necesitan
MSS.chkCheckpoint: posición hasta la que ya se han aplicado los registros
*.jrsRegistros de reserva (seguridad ante disco lleno)
MSStmp.logRegistro temporal

El nombre base MSS es lo que se pasa a esentutl.

Paso 1: comprueba el estado

Sobre una copia, con esentutl.exe integrado en Windows:

esentutl /mh Windows.edb

Busca:

 State: Dirty Shutdown

o Clean Shutdown. La salida también muestra el tamaño de página (cbDbPage) y el rango de registros que la base todavía necesita. La entrada archivada de Microsoft sobre esentutl y VSS muestra un volcado real de cabecera en ambos estados. El Windows Search Index Parser lee el mismo campo de estado y avisa cuando está en dirty.

Si esentutl se niega a abrir un archivo que otro proceso tiene abierto, estás trabajando sobre el archivo en uso. Detente y haz antes una copia: ver opciones de adquisición.

Paso 2: prepara una copia de trabajo

  1. Calcula el hash de la carpeta adquirida.
  2. Copia toda la carpeta a un directorio de trabajo, por ejemplo D:\work\search. La recuperación necesita juntos la base, todas las generaciones MSS*.log y MSS.chk.
  3. Usa una máquina de análisis Windows cuya versión de ESE sea al menos tan reciente como la del sistema de origen. Un motor más antiguo puede rechazar una base escrita por uno más nuevo.

Paso 3: recuperación suave con esentutl /r

cd /d D:\work\search
esentutl /r MSS /d

Qué hacen las opciones, según la referencia archivada de esentutl en modo recuperación:

OpciónSignificado¿Usarla?
/r MSSRecuperación con los registros de nombre base MSSSí
/lUbicación de los registros (por defecto: directorio actual)Solo si los registros están en otro sitio
/sUbicación de los archivos de sistema, como el checkpoint (por defecto: directorio actual)Solo si MSS.chk está en otro sitio
/d [ruta]Ubicación de los archivos de base; sin ruta, el directorio actual. Sin /d: el directorio registrado originalmente en los registros.Siempre, para que la recuperación se quede dentro de la copia de trabajo
/iIgnorar adjuntos de base ausentes o que no coincidenSolo si la recuperación falla por los adjuntos; documéntalo
/aPermitir que la recuperación pierda datos confirmados si se mantiene la integridadÚltimo recurso; documéntalo
/tTruncar los registros tras el éxitoNo: conserva los registros como evidencia

Vuelve a ejecutar esentutl /mh Windows.edb. El estado debería ser ahora Clean Shutdown.

Si la recuperación falla porque falta una generación de registros, tu adquisición está incompleta. Vuelve a adquirir si es posible. Si no, analiza la base en dirty tal cual e indica la laguna.

Alternativa: /vssrec en un sistema vivo

En un sistema vivo con Windows 10 o posterior, esentutl puede copiar la base desde una instantánea de volumen y reproducir los registros dentro de la instantánea de una sola vez:

cd /d C:\ProgramData\Microsoft\Search\Data\Applications\Windows
esentutl /y Windows.edb /d D:\case\Windows.edb /vssrec MSS .

Esto reproduce el ejemplo de la entrada archivada de Microsoft (/y <origen> /d <destino> /vssrec <nombre base de registros> <ruta de registros>), ejecutado desde la carpeta de la base para que . sea la ruta de los registros. Obtienes una copia limpia sin detener el servicio. Dos advertencias de la misma entrada: las transacciones no confirmadas en el momento de la instantánea se revierten, y la instantánea añade carga de E/S. Yo también adquiero la carpeta en bruto para conservar el estado sin recuperar.

¿Por qué no /p (reparación)?

esentutl /p es una reparación: deja la base coherente descartando lo que no puede arreglar. Es una operación con pérdida de datos pensada para administradores que quieren recuperar una base funcional. Para evidencias, la herramienta adecuada es la recuperación suave con los registros. Si alguna vez necesitas /p, ejecútalo sobre una copia aparte y guarda la base sin reparar junto a ella.

¿Recuperada o en bruto? ¿Cuál analizar?

Ambas, cuando importa.

Copia en bruto en dirtyCopia tras la recuperación suave
Cambios recientes que siguen en los registrosAusentesIncluidos
Registros borrados por esas transacciones registradasPueden seguir visiblesDesaparecidos (el borrado se ha aplicado)
CoherenciaPáginas posiblemente a medio actualizarCoherente
Modificada por tiNoSí, copia de trabajo documentada

Las dos primeras filas explican por qué conservo ambas: la copia en bruto aún puede mostrar un elemento que las transacciones registradas eliminan, mientras que la recuperada muestra las últimas incorporaciones. Una comparación de las dos exportaciones muestra exactamente qué contenían los registros.

¿Necesita el analizador una base limpia?

No. El Windows Search Index Parser lee bases en dirty e indica su estado. Enumera los archivos MSS*.log, .jrs y MSS.chk que encuentra como reconocidos pero no analizados: no reproduce por sí mismo los registros de transacciones. Para la vista más completa, recupera una copia con esentutl /r y carga las dos copias una tras otra. Recuerda que su lector ESE solo se ha validado con bases sintéticas; contrasta los resultados clave con otra herramienta (ver la comparativa).

Preguntas frecuentes

¿Debo usar esentutl /p en un Windows.edb en dirty shutdown?

No como primer paso. /p es una reparación que puede descartar páginas y datos dañados. Usa primero la recuperación suave (/r) con los registros. Repara solo una copia, solo si la recuperación falla, y documéntalo.

¿Puedo analizar un Windows.edb en dirty shutdown sin recuperarlo?

Sí. El archivo de base es legible; solo le faltan los cambios que siguen en los registros. El Windows Search Index Parser lo lee y avisa de que pueden faltar cambios recientes.

Artículos relacionados

Artículos relacionados