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:
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