Función JetCompact

Se aplica a: Windows | Windows Server

Función JetCompact

La función JetCompact realiza una copia de una base de datos existente. La copia se compacta en un estado óptimo para su uso. Los datos de los datos copiados se empaquetarán según las medidas elegidas para los índices en la creación de índices. De este modo, los datos compactos se pueden almacenar lo más densamente posible. Como alternativa, los datos compactos pueden reservar espacio para las inserciones de índice o crecimiento de registros posteriores.

    JET_ERR JET_API JetCompact(
      __in          JET_SESID sesid,
      __in          JET_PCSTR szDatabaseSrc,
      __in          JET_PCSTR szDatabaseDest,
      __in          JET_PFNSTATUS pfnStatus,
      __in_opt      JET_CONVERT* pconvert,
      __in          JET_GRBIT grbit
    );

Parámetros

sesid

La sesión que se va a usar para esta llamada.

szDatabaseSrc

Base de datos de origen que se compactará.

szDatabaseDest

Nombre que se va a usar para la base de datos compactada.

pfnStatus

Función de devolución de llamada a la que se puede llamar periódicamente a través de la operación compacta de la base de datos para notificar el progreso.

pconvert

Puntero utilizado para designar una DLL de ESE alternativa que se puede usar para leer la base de datos de origen y para proporcionar parámetros opcionales para una operación JetCompact que convierte una base de datos de un formato anterior a una versión posterior. Esta característica se descontinuó en Windows Server 2003.

grbit

Un grupo de bits que especifica cero o más de las siguientes opciones.

Valor

Significado

JET_bitCompactRepair

Se usa cuando se sabe que la base de datos de origen está dañada. Permite un conjunto completo de nuevos comportamientos destinados a recuperar tantos datos como sea posible de la base de datos de origen. JetCompact con este conjunto de opciones puede devolver JET_errSuccess pero no copiar todos los datos creados en la base de datos de origen. Se omitirán los datos que se encontraban en partes dañadas de la base de datos de origen.

JET_bitCompactStats

Hace que JetCompact volque las estadísticas de la base de datos de origen en un archivo denominado DFRGINFO.TXT. Las estadísticas incluyen el nombre de cada tabla de la base de datos de origen, el número de filas de cada tabla, el tamaño total en bytes de todas las filas de cada tabla, el tamaño total en bytes de todas las columnas de tipo JET_coltypLongText o JET_coltypLongBinary que eran lo suficientemente grandes como para almacenarse separados del registro, el número de páginas hoja de índice agrupadas, y el número de páginas hoja de valores largos. Además, las estadísticas de resumen, incluido el tamaño de la base de datos de origen, la base de datos de destino, el tiempo necesario para la compactación de la base de datos, el espacio temporal de la base de datos también se volcado.

Valor devuelto

Esta función devuelve el JET_ERR tipo de datos con uno de los siguientes códigos de retorno. Para obtener más información sobre los posibles errores de ESE, vea Extensible Storage Engine Errors and Error Handling Parameters.

Código devuelto

Descripción

JET_errSuccess

La operación se ha completado correctamente.

JET_errClientRequestToStopJetService

No es posible completar la operación porque toda la actividad de la instancia asociada a la sesión ha dejado de funcionar como resultado de una llamada a JetStopService.

JET_errFeatureNotAvailable

Se ha proporcionado un puntero pconvert distinto de NULL, pero la versión de ESE que se usa no admite la característica de conversión. Esta característica se quitó en la versión de Windows Server 2003 de ESE.

JET_errInstanceUnavailable

No es posible completar la operación porque la instancia asociada a la sesión ha encontrado un error irrecuperable que requiere que se revoque el acceso a todos los datos para proteger la integridad de esos datos. Este error solo lo devolverá Windows XP y versiones posteriores.

JET_errInTransaction

La sesión de llamada se encuentra dentro de una transacción. JetCompact debe llamar a una sesión fuera de cualquier transacción.

JET_errNotInitialized

No es posible completar la operación porque la instancia asociada a la sesión aún no se ha inicializado.

JET_errRestoreInProgress

No es posible completar la operación porque una operación de restauración está en curso en la instancia asociada a la sesión.

JET_errSessionSharingViolation

No se puede usar la misma sesión para más de un subproceso al mismo tiempo.

Este error solo lo devolverá Windows XP y versiones posteriores.

JET_errTermInProgress

No es posible completar la operación porque la instancia asociada a la sesión se está cerrando.

Si se ejecuta correctamente, la base de datos de origen se copia en la base de datos de destino. La base de datos de destino está en un estado óptimo, por ejemplo, todos los índices de tabla se encuentran en el espacio en disco lógico adyacente. Cada página de índice se rellena en la cantidad configurada cuando los índices se crearon originalmente en la base de datos de origen. Todas las configuraciones de datos y metadatos se copian con fidelidad completa, a menos que se especifique la opción de reparación. Si se especificó la opción de reparación, es posible que algunos datos de la base de datos de origen no se hayan copiado.

Si se produce un error, la base de datos de destino puede existir, pero no es una copia completa de la base de datos de origen.

Observaciones

La compactación de una base de datos también se usa para actualizar una base de datos de un formato de versión anterior a una versión más moderna. Un parámetro opcional es pconvert, que contiene una estructura que puede contener una descripción de un archivo DLL de versión anterior que se va a usar para leer el formato de la base de datos de origen. Esta característica se descontinuó en Windows Server 2003. Después de Windows Server 2003, las nuevas versiones de ESE siempre pueden leer versiones anteriores del formato de base de datos y, por tanto, esta característica no es necesaria.

La densidad deseada de datos después de una operación compacta se especifica cuando se crean tablas e índices. La densidad debe estar entre el 20 % y el 100 %. Si una base de datos se lee principalmente y no se actualiza, las aplicaciones establecerán la densidad en un 100 % para reducir el número de operaciones de E/S durante el procesamiento de consultas. Sin embargo, si los datos se actualizan con frecuencia con operaciones que aumentan el tamaño de los datos almacenados junto con el registro, o los nuevos datos se insertan con frecuencia, la aplicación elegirá una menor densidad para que las actualizaciones encuentren más a menudo los recursos necesarios disponibles. El funcionamiento de la compactación de la base de datos hace que la base de datos se establezca idealmente según el relleno elegido por la aplicación.

La compactación de la base de datos es una operación fuera de línea. No se puede realizar mientras la base de datos está en uso. Como resultado, normalmente se realiza como parte de un proceso de compilación de desarrollo de una aplicación que entrega un conjunto de datos como parte de sí mismo.

La compactación de la base de datos sin conexión toca cada bit de datos de una base de datos y se puede usar como medio para comprobar la coherencia de una base de datos. Si una base de datos es sospechosa, se puede compactar. Si no se encuentra ningún error en la compactación, se sabrá que la base de datos está en un estado válido para ESE.

Requisitos

Requisito Value

Cliente

Requiere Windows Vista, Windows XP o Windows 2000 Professional.

Servidor

Requiere Windows Server 2008, Windows Server 2003 o Windows 2000 Server.

Encabezado

Declarado en Esent.h.

Library

Use ESENT.lib.

Archivo DLL

Requiere ESENT.dll.

Unicode

Se implementa como JetCompactW (Unicode) y JetCompactA (ANSI).

Consulte también

JET_COLTYP
JET_ERR
JET_SESID
JetDefragment
JetStopService