Función JetInit

Se aplica a: Windows | Windows Server

Función JetInit

La función JetInit coloca el motor de base de datos en un estado en el que puede admitir el uso de aplicaciones de archivos de base de datos. El motor ya debe estar configurado correctamente para la inicialización mediante JetSetSystemParameter. La recuperación del bloqueo de la base de datos se realiza automáticamente como parte del proceso de inicialización.

JET_ERR JET_API JetInit(
  __in_out_opt  JET_INSTANCE* pinstance
);

Parámetros

pinstance

Instancia que se va a usar para esta llamada.

Para Windows 2000, este parámetro se omite y siempre debe ser NULL.

Para Windows XP y versiones posteriores, el uso de este parámetro depende del modo de funcionamiento del motor. Si el motor funciona en modo heredado (modo de compatibilidad de Windows 2000), donde solo se admite una instancia, este parámetro puede ser NULL o puede establecerse en un búfer de salida válido que devolverá el identificador de instancia global creado como efecto secundario de la inicialización. Este búfer de salida debe establecerse en NULL o JET_instanceNil. A continuación, este identificador de instancia se puede pasar a cualquier otra función que use una instancia. Si el motor funciona en modo de varias instancias, este parámetro debe establecerse en un búfer de entrada válido que contenga el identificador de instancia devuelto por la instancia de la función JetCreateInstance que se está inicializando.

Comentarios

Una instancia debe inicializarse con una llamada a JetInit para poder usarla cualquier cosa distinta de JetSetSystemParameter.

Una instancia se destruye mediante una llamada a la función JetTerm , incluso si esa instancia nunca se inicializó con JetInit. Una instancia es la unidad de capacidad de recuperación para el motor de base de datos. Controla el ciclo de vida de todos los archivos usados para proteger la integridad de los datos en un conjunto de archivos de base de datos. Estos archivos incluyen el archivo de punto de comprobación y los archivos de registro de transacciones.

El número máximo de instancias que se pueden crear en cualquier momento se controla mediante JET_paramMaxInstances, que se puede configurar mediante una llamada a JetSetSystemParameter. Cuando el motor de base de datos se inicializa por primera vez, JetInit creará un conjunto inicial de archivos para admitir esa instancia. Estos archivos incluyen un archivo de punto de control (denominado <JET_paramBaseName>. CHK), un conjunto de archivos de registro de transacciones reservados (denominado RES1. LOG y RES2. LOG), un archivo de registro de transacciones inicial (denominado <JET_paramBaseName>. LOG) y un archivo de base de datos temporal (denominado según JET_paramTempPath). Si JET_paramRecovery se establece en "Desactivado", el archivo de punto de comprobación y los archivos de registro no se crearán. Si JET_paramMaxTemporaryTables se establece en cero, no se creará el archivo de base de datos temporal. Estos archivos representan la superficie en disco de una instancia y deben administrarse con cuidado. Si estos archivos están dañados individualmente o con respecto a otros, se pueden perder los datos almacenados en las bases de datos asociadas a la instancia de .

Cuando el motor de base de datos se inicializa con un conjunto existente de archivos de registro de transacciones, esos archivos se inspeccionarán para ver si la encarnación anterior de la instancia sufrió un bloqueo. Si se detecta un bloqueo, se realizará automáticamente la recuperación de bloqueos. Este proceso reconstruirá las bases de datos adjuntas a la instancia durante la encarnación anterior del motor y guardará los cambios en los archivos de base de datos. El resultado será las bases de datos coherentes con las transacciones. Es posible que este proceso tarde bastante tiempo si el número de archivos de registro de transacciones para reproducirse en las bases de datos es grande.

Debido al hecho de que JetInit realiza la recuperación de bloqueos, es posible que casi cualquier error del motor de base de datos se devuelva en caso de error. En la práctica, la mayoría de los errores detectados en la implementación se dividen en dos categorías: daños en los datos y administración incorrecta de archivos. Los datos dañados se manifestarán con más frecuencia en los errores siguientes o similares:

  • JET_errReadVerifyFailure

  • JET_errLogFileCorrupt

  • JET_errCheckpointCorrupt

Estos errores son casi siempre causados por problemas de hardware y, por tanto, no se pueden evitar. La administración incorrecta de archivos se manifestará con más frecuencia en los errores siguientes o similares:

  • JET_errMissingLogFile

  • JET_errAttachedDatabaseMismatch

  • JET_errDatabaseSharingViolation

  • JET_errInvalidLogSequence

Si la recuperación se ejecuta en un conjunto de registros, para el que no todas las bases de datos están presentes (lo que devolverá el error JET_errAttachedDatabaseMismatch en circunstancias normales) y el cliente desea que la recuperación continúe a pesar de las bases de datos que faltan, se puede usar el JET_ bitReplayIgnoreMissingDB para continuar con la recuperación de las bases de datos disponibles. La aplicación puede evitar estos errores. La aplicación debe tener cuidado de proteger el repositorio de estos archivos frente a la manipulación por parte de fuerzas externas, como el usuario u otras aplicaciones. Si la aplicación desea destruir una instancia por completo, se deben eliminar todos los archivos asociados a la instancia. Estos incluyen el archivo de punto de comprobación, los archivos de registro de transacciones y los archivos de base de datos adjuntos a la instancia de .

La función JetInit se comporta de forma diferente, con respecto a los archivos de base de datos adjuntos a la instancia, entre Windows 2000 y versiones posteriores.

Windows 2000: En Windows 2000, cualquier base de datos adjunta a la instancia durante una encarnación anterior de esa instancia permanece adjunta a la instancia después de que JetInit se complete correctamente. No es necesario llamar a JetAttachDatabase después de JetInit para asegurar el acceso posterior a la base de datos. Si se llama a la función JetAttachDatabase después de la función JetInit , se devolverá la advertencia JET_wrnDatabaseAttached. Esta advertencia indica que se conservan los datos adjuntos de la base de datos y se pueden omitir.

Windows XP: En Windows XP y versiones posteriores, todas las bases de datos se desasocian automáticamente de la instancia de JetInit. Esto significa que jetAttachDatabase siempre debe llamarse después de JetInit en este caso.

Cualquier aplicación escrita para ejecutarse en Windows 2000 y en versiones posteriores siempre debe llamar a JetAttachDatabase después de JetInit. Si la aplicación se ejecuta en Windows 2000, debe esperar ver JET_wrnDatabaseAttached en algunos casos. Consulte JetAttachDatabase para obtener más información.

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.

Consulte también

Archivos extensibles del motor de almacenamiento
JET_ERR
JET_GRBIT
JET_INSTANCE
JET_paramMaxTemporaryTables
JET_paramRecovery
JetAttachDatabase
JetCreateInstance
JetInit3
JetSetSystemParameter