Función JetAttachDatabase

Se aplica a: Windows | Windows Server

Función JetAttachDatabase

La función JetAttachDatabase adjunta un archivo de base de datos para su uso con una instancia de base de datos. Para usar la base de datos, deberá abrirse posteriormente con JetOpenDatabase.

    JET_ERR JET_API JetAttachDatabase(
      __in          JET_SESID sesid,
      __in          const tchar* szFilename,
      __in          JET_GRBIT grbit
    );

Parámetros

sesid

Contexto de sesión de base de datos que se va a usar para la llamada API.

szFilename

Nombre de la base de datos que se va a adjuntar.

grbit

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

Valor

Significado

JET_bitDbDeleteCorruptIndexes

Si se ha establecido JET_paramEnableIndexChecking, se eliminarán todos los índices de los datos Unicode. Para obtener información más detallada, consulte la sección Comentarios.

JET_bitDbDeleteUnicodeIndexes

Todos los índices sobre datos Unicode se eliminarán, independientemente de la configuración de JET_paramEnableIndexChecking. Para obtener información más detallada, consulte la sección Comentarios.

JET_bitDbUpgrade

Obsoleto. No debe usarse.

JET_bitDbReadOnly

Impide modificaciones en la base de datos.

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_errBackupInProgress

No se permite adjuntar una base de datos durante una copia de seguridad.

JET_errDatabaseFileReadOnly

El archivo de base de datos especificado por szFilename debe ser grabable. No se debe establecer el atributo Read-Only y el proceso en ejecución debe tener privilegios suficientes para escribir en el archivo.

JET_errDatabaseInUse

Otro proceso ya abre el archivo de base de datos.

JET_errDatabaseInvalidPath

Se ha proporcionado una ruta de acceso no válida en szFilename. szFilename debe ser distinto de NULL y hacer referencia a una ruta de acceso válida.

JET_errDatabaseSharingViolation

El archivo de base de datos ya se ha adjuntado mediante una sesión diferente.

JET_errFileAccessDenied

El motor de base de datos no puede abrir el archivo de base de datos. El archivo puede estar en uso por otro proceso o es posible que el autor de la llamada no tenga privilegios suficientes para abrir el archivo.

JET_errFileNotFound

El archivo especificado en szFilename no existe.

JET_errPrimaryIndexCorrupted

Hay un error con el índice principal. Esto puede deberse a daños físicos (como daños en el disco o en la memoria). También se puede devolver al adjuntar una base de datos modificada por última vez en un sistema operativo anterior y el índice principal se encuentra sobre una columna con datos Unicode. Consulte los comentarios para obtener más información sobre los índices sobre datos Unicode.

JET_errSecondaryIndexCorrupted

Hay un error con un índice secundario. Esto puede deberse a daños físicos (como daños en el disco o en la memoria). También se puede devolver al adjuntar una base de datos modificada por última vez en un sistema operativo anterior y un índice secundario se encuentra sobre una columna con datos Unicode. Consulte los comentarios para obtener más información sobre los índices sobre datos Unicode. Los índices secundarios se vuelven a generar completamente cuando una base de datos se desfragmenta con una utilidad sin conexión mediante el siguiente comando: esentutl -d.

JET_errTooManyAttachedDatabases

Solo se puede adjuntar un número finito de bases de datos por instancia. El límite es actualmente siete bases de datos por instancia.

JET_wrnDatabaseAttached

Advertencia nofatal que indica que este archivo de base de datos ya está asociado a esta sesión.

Comentarios

Llamar a JetAttachDatabase equivale a llamar a JetAttachDatabase2 y pasar un valor de cero, lo que significa que no hay ningún límite para el parámetro cpgDatabaseSizeMax .

Al adjuntar una base de datos grabable (es decir, si no se especificó JET_bitDbReadOnly en el parámetro grbit ) se abrirá el archivo exclusivamente en el nivel de sistema operativo. Ningún otro proceso podrá abrir el archivo. Es posible que varios procesos adjunte una sola base de datos abriendolas en modo de solo lectura.

El archivo de base de datos se desasocia mediante JetDetachDatabase o JetDetachDatabase2.

Parámetros de comprobación de índices

Diferentes versiones de Windows normalizan texto Unicode de diferentes maneras. Esto significa que es posible que los índices compilados en una versión de Windows no funcionen en otras versiones.

Antes de Windows Server 2003, cuando la versión del sistema operativo cambiaba (incluida la instalación de un Service Pack), cada índice sobre los datos Unicode estaba en un estado potencialmente dañado.

Los índices creados en Windows Server 2003 y versiones posteriores se marcan con la versión de normalización Unicode con la que se crearon. Los índices anteriores no contienen información de versión. La mayoría de los cambios de normalización Unicode consisten en agregar nuevos caracteres, los puntos de código que anteriormente no estaban definidos ahora se definen y normalizan de forma diferente. Por lo tanto, si los datos binarios se almacenan en una columna Unicode, normalizarán de forma diferente a medida que se definen nuevos puntos de código.

A partir de Windows Server 2003, el motor de base de datos ESE realiza un seguimiento de las entradas de índice Unicode que contienen puntos de código no definidos. Se pueden usar para corregir un índice cuando cambia el conjunto de caracteres Unicode definidos.

Estos parámetros controlan lo que sucede cuando el motor de base de datos ESE se asocia a una base de datos que se usó por última vez en una compilación diferente del sistema operativo. La versión del sistema operativo se marca en el encabezado de la base de datos.

Si JET_paramEnableIndexChecking se establece en TRUE y la base de datos contiene índices potencialmente dañados:

  • JetAttachDatabase eliminará los índices potencialmente dañados si grbit contiene JET_bitDbDeleteCorruptIndexes

  • JetAttachDatabasedevolverá un error si grbit no contiene JET_bitDbDeleteCorruptIndexes y hay índices que necesitan eliminarse.

Si JET_paramEnableIndexChecking se establece en FALSE:

  • JetAttachDatabase omitirá los índices potencialmente dañados y devolverá JET_errSuccess (suponiendo que no haya otros errores).

Windows Server 2003 y versiones posteriores: si no se ha restablecido JET_paramEnableIndexChecking , la tabla de corrección interna se usará para corregir entradas de índice. Esto puede no corregir todos los daños en el índice, pero será transparente para la aplicación.

Si la base de datos se adjuntó como de solo lectura, el índice no se puede corregir ni eliminar. En este caso, la API devolverá un error, como JET_errSecondaryIndexCorrupted o JET_errPrimaryIndexCorrupted.

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 JetAddColumnW (Unicode) y JetAddColumnA (ANSI).

Consulte también

Archivos extensibles del motor de almacenamiento
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetAttachDatabase2
JetCreateDatabase
JetDetachDatabase
JetDetachDatabase2
JetOpenDatabase
JetSetSystemParameter