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