Compartir a través de


Función JetOpenTempTable3

Se aplica a: Windows | Windows Server

Función JetOpenTempTable3

La función JetOpenTempTable3 crea una tabla temporal con un único índice que se puede usar para almacenar y recuperar registros igual que una tabla normal creada con JetCreateTableColumnIndex. Sin embargo, las tablas temporales son mucho más rápidas que las tablas normales debido a su naturaleza volátil. También se pueden usar para ordenar y realizar la eliminación de duplicados en conjuntos de registros cuando se accede a ellos de forma puramente secuencial.

    JET_ERR JET_API JetOpenTempTable3(
      __in          JET_SESID sesid,
      __in          const JET_COLUMNDEF* prgcolumndef,
      __in          unsigned long ccolumn,
      __in_opt      JET_UNICODEINDEX* pidxunicode,
      __in          JET_GRBIT grbit,
      __out         JET_TABLEID* ptableid,
      __out         JET_COLUMNID* prgcolumnid
    );

Parámetros

sesid

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

prgcolumndef

Identifica las definiciones de columna de las columnas que se van a crear en la tabla temporal.

Existen limitaciones importantes para las opciones de definición de columna que se pueden usar con una tabla temporal. Vea la sección Comentarios para obtener más información.

Además de las opciones de definición de columna habituales, también se pueden especificar cero o más de las siguientes opciones que solo son relevantes en el contexto de una tabla temporal.

Value

Significado

JET_bitColumnTTDescending

Esta opción indica que el criterio de ordenación de la columna de clave para la tabla temporal debe ser descendente en lugar de ascendente. Si esta opción se especifica sin JET_bitColumnTTKey, esta opción se omite.

JET_bitColumnTTKey

Esta opción indica que la columna será una columna de clave para la tabla temporal.

El orden de las definiciones de columna con esta opción especificada en la matriz de entrada determinará la prioridad de cada columna de clave para la tabla temporal. La primera definición de columna de la matriz con este conjunto de opciones será la columna de clave más significativa, etc. Si se solicitan más columnas de clave de las que puede admitir el motor de base de datos, esta opción se omite para las columnas de clave no compatibles.

ccolumn

Consulte prgcolumndef.

pidxunicode

El identificador de configuración regional y las marcas de normalización que se usarán para comparar los datos de columna de clave Unicode de la tabla temporal.

Cuando este parámetro no está presente, se usará el LCID predeterminado para comparar las columnas de clave Unicode de la tabla temporal. El LCID predeterminado es la configuración regional en inglés de EE. UU.

Cuando este parámetro no está presente, se usarán las marcas de normalización predeterminadas para comparar los datos de columna de clave Unicode de la tabla temporal. Las marcas de normalización predeterminadas son: NORM_IGNORECASE, NORM_IGNOREKANATYPE y NORM_IGNOREWIDTH.

grbit

Un grupo de bits que contienen las opciones que se usarán para esta llamada, que incluyen cero o más de lo siguiente.

Value

Significado

JET_bitTTErrorOnDuplicateInsertion

Esta opción solicita que cualquier intento de insertar un registro con la misma clave de índice que un registro insertado anteriormente producirá un error inmediatamente con JET_errKeyDuplicate. Si no se solicita esta opción, es posible que se detecte un duplicado inmediatamente y se produzca un error o se quite de forma silenciosa más adelante en función de la estrategia elegida por el motor de base de datos para implementar la tabla temporal en función de la funcionalidad solicitada.

Si esta funcionalidad no es necesaria, es mejor no solicitarla. Si no se solicita esta funcionalidad, es posible que el administrador de tablas temporales pueda elegir una estrategia para administrar la tabla temporal que dará como resultado un rendimiento mejorado.

JET_bitTTForceMaterialization

Esta opción obliga al administrador de tablas temporales a abandonar cualquier intento de elegir una estrategia inteligente para administrar la tabla temporal que dará como resultado un rendimiento mejorado.

JET_bitTTForwardOnly

Esta opción solicita que la tabla temporal solo se cree si el administrador de tablas temporales puede usar la implementación optimizada para los resultados intermedios de la consulta. Si alguna característica de la tabla temporal impediría el uso de esta optimización, se producirá un error en la operación con JET_errCannotMaterializeForwardOnlySort.

Un efecto secundario de esta opción es permitir que la tabla temporal contenga registros con claves de índice duplicadas. Consulte JET_bitTTUnique para obtener más información.

Esta opción solo está disponible en Windows Server 2003 y versiones posteriores.

JET_bitTTIndexed

Esta opción solicita que la tabla temporal sea lo suficientemente flexible como para permitir el uso de JetSeek para buscar registros por clave de índice.

Si esta funcionalidad no es necesaria, es mejor no solicitarla. Si no se solicita esta funcionalidad, es posible que el administrador de tablas temporales pueda elegir una estrategia para administrar la tabla temporal que dará como resultado un rendimiento mejorado.

JET_bitTTUnique

Esta opción solicita que los registros con claves de índice duplicadas se quiten del conjunto final de registros de la tabla temporal.

Antes de Windows Server 2003, el motor de base de datos siempre presupone que esta opción está en vigor debido al hecho de que todos los índices agrupados también deben ser una clave principal y, por tanto, deben ser únicos. A partir de Windows Server 2003, ahora es posible crear una tabla temporal que no quita duplicados cuando también se especifica la opción JET_bitTTForwardOnly.

No es posible saber qué duplicado ganará y qué duplicados se descartarán en general. Sin embargo, cuando se solicite la opción JET_bitTTErrorOnDuplicateInsertion, el primer registro con una clave de índice determinada que se va a insertar en la tabla temporal siempre ganará.

JET_bitTTUpdatable

Esta opción solicita que la tabla temporal sea lo suficientemente flexible como para permitir que los registros que se hayan insertado previamente se cambien posteriormente. Si esta funcionalidad no es necesaria, es mejor no solicitarla.

Si no se solicita esta funcionalidad, es posible que el administrador de tablas temporales pueda elegir una estrategia para administrar la tabla temporal que dará como resultado un rendimiento mejorado.

JET_bitTTScrollable

Esta opción solicita que la tabla temporal sea lo suficientemente flexible como para permitir que los registros se examinen en orden arbitrario y dirección mediante JetMove.

Si esta funcionalidad no es necesaria, es mejor no solicitarla. Si no se solicita esta funcionalidad, es posible que el administrador de tablas temporales pueda elegir una estrategia para administrar la tabla temporal que dará como resultado un rendimiento mejorado.

JET_bitTTSortNullsHigh

Esta opción solicita que los valores de columna de clave NULL se ordenan más cerca del final del índice que los valores de columna de clave no NULL.

JET_bitTTIntrinsicLVsOnly

Solicitudes para permitir solo valores largos intrínsecos.

Windows 7: JET_bitTTIntrinsicLVsOnly se introduce en Windows 7.

ptableid

Búfer de salida que recibirá el nuevo cursor abierto en la tabla temporal recién creada.

prgcolumnid

Búfer de salida que recibirá la matriz de identificadores de columna generados durante la creación de la tabla temporal.

Los identificadores de columna de esta matriz se corresponderán exactamente con la matriz de entrada de definiciones de columna. Como resultado, el tamaño de este búfer debe corresponder al tamaño de la matriz de entrada.

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_errCannotMaterializeForwardOnlySort

Error de JetOpenTempTable3 porque se especificó JET_bitTTForwardOnly y no se pudo crear la tabla temporal como se especificó mediante la optimización de solo avance. Este error solo lo devolverá Windows Server 2003 y versiones posteriores.

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_errIndexInvalidDef

No se pudo crear el índice porque se especificó una definición de índice no válida. JetOpenTempTable3 devolverá este error cuando:

  • Se especifica la configuración regional neutral del idioma.

  • Se especifica un conjunto no válido de marcas de normalización.

Windows 2000 solo devolverá este error.

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. Windows XP solo devolverá este error y versiones posteriores.

JET_errInvalidCodePage

El miembro cp de la estructura JET_COLUMNDEF no se estableció en una página de códigos válida. Los únicos valores válidos para las columnas de texto son Inglés (1252) y Unicode (1200). Un valor de 0 significa que se usará el valor predeterminado (inglés, 1252).

JET_errInvalidColumnType

El miembro coltyp de la estructura JET_COLUMNDEF no se estableció en un tipo de columna válido.

JET_errInvalidLanguageId

No se pudo crear el índice porque se intentó usar un identificador de configuración regional no válido. Es posible que el identificador de configuración regional no sea válido o que el paquete de idioma asociado no esté instalado.

JET_errInvalidLCMapStringFlags

No se pudo crear el índice porque se intentó usar un conjunto no válido de marcas de normalización. Windows XP solo devolverá este error y versiones posteriores. En Windows 2000, las marcas de normalización no válidas darán lugar a JET_errIndexInvalidDef en su lugar.

JET_errInvalidSesid

El identificador de sesión no es válido o hace referencia a una sesión cerrada. Este error no se devuelve en todas las circunstancias. Los identificadores solo se validan con el mejor esfuerzo.

JET_errNotInitialized

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

JET_errOutOfCursors

Error en la operación porque el motor no puede asignar los recursos necesarios para abrir un nuevo cursor. Los recursos de cursor se configuran mediante JetSetSystemParameter con JET_paramMaxCursors.

JET_errOutOfMemory

Error en la operación porque no se pudo asignar suficiente memoria para completarla.

JetOpenTempTable3 puede devolver JET_errOutOfMemory si el espacio de direcciones del proceso host se vuelve demasiado fragmentado. El administrador de tablas temporales siempre asignará un fragmento de 1 MB de espacio de direcciones para cada tabla temporal creada independientemente de la cantidad de datos que se van a almacenar.

JET_errRestoreInProgress

No es posible completar la operación porque hay una operación de restauración 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.

Windows XP solo devolverá este error y versiones posteriores.

JET_errTermInProgress

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

JET_errTooManyColumns

Se intentó agregar demasiadas columnas a la tabla. Una tabla no puede tener más de JET_ccolFixedMost columnas fijas, más de JET_ccolVarMost columnas de longitud variable y no más de JET_ccolTaggedMost columnas etiquetadas.

JET_errTooManyOpenIndexes

Error en la operación porque el motor no puede asignar los recursos necesarios para almacenar en caché los índices de la tabla. El número de índices cuyo esquema se puede almacenar en caché se configura mediante JetSetSystemParameter con JET_paramMaxOpenTables.

JET_errTooManyOpenTables

Error en la operación porque el motor no puede asignar los recursos necesarios para almacenar en caché el esquema de la tabla. El número de tablas cuyo esquema se puede almacenar en caché se configura mediante JetSetSystemParameter con JET_paramMaxOpenTables.

JET_errTooManySorts

Error en la operación porque el motor no puede asignar los recursos necesarios para crear una tabla temporal. Los recursos de tabla temporal se configuran mediante JetSetSystemParameter con JET_paramMaxTemporaryTables.

Si se ejecuta correctamente, se devolverá un cursor abierto en la tabla temporal recién creada. El estado de la base de datos temporal se preparará para contener la nueva tabla temporal. El estado de las bases de datos normales que use el motor de base de datos permanecerá sin cambios.

En caso de error, no se creará la tabla temporal y no se devolverá un cursor. El estado de la base de datos temporal se puede cambiar. El estado de las bases de datos normales que use el motor de base de datos permanecerá sin cambios.

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

Errores del motor de almacenamiento extensible
Parámetros de control de errores
JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_UNICODEINDEX
JetCloseTable
JetCreateTableColumnIndex
JetDupCursor
JetMove
JetOpenTempTable
JetRollback
JetSeek
JetSetSystemParameter
Parámetros del sistema