Función JetOpenTempTable2
Se aplica a: Windows | Windows Server
Función JetOpenTempTable2
La función JetOpenTempTable2 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. Esta función también tiene un identificador de configuración regional que se puede usar para comparar los datos de columna de clave Unicode en la tabla temporal. 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 JetOpenTempTable2(
__in JET_SESID sesid,
__in const JET_COLUMNDEF* prgcolumndef,
__in unsigned long ccolumn,
__in unsigned long lcid,
__in JET_GRBIT grbit,
__out JET_TABLEID* ptableid,
__out JET_COLUMNID* prgcolumnid
);
Parámetros
sesid
Sesión que se va a usar.
prgcolumndef
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 usan 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 |
El criterio de ordenación de la columna de clave de 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 |
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.
lcid
Identificador de configuración regional que se va a usar para comparar los datos de columna de clave Unicode de la tabla temporal.
Cualquier configuración regional se puede usar siempre que se haya instalado el paquete de idioma adecuado en el equipo. La única excepción es que la configuración regional neutral del idioma (LCID de cero) es ilegal.
En Windows Server 2003 y versiones posteriores, si se especifica la configuración regional neutral del idioma para este parámetro, se usará en su lugar el identificador de configuración regional predeterminado (inglés de EE. UU.). Esto es para permitir que un valor de cero signifique el valor predeterminado en lugar de un valor no válido.
Cuando este parámetro no está presente y cuando el parámetro pidxunicode no está presente, se usará el LCID predeterminado para comparar los datos de columna de clave Unicode de la tabla temporal. El LCID predeterminado es la configuración regional en inglés de EE. UU.
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_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_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_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 JetOpenTempTable2 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_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. Este error solo lo devolverá Windows XP y versiones posteriores. |
JET_errInvalidCodePage |
El campo cp del 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 campo coltyp del JET_COLUMNDEF no se estableció en un tipo de columna válido. |
JET_errIndexInvalidDef |
No se pudo crear el índice porque se especificó una definición de índice no válida. JetOpenTempTable2 devolverá este error cuando:
Windows 2000 solo devolverá este error. |
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. Este error solo lo devolverá Windows XP y versiones posteriores. En Windows 2000, las marcas de normalización no válidas darán lugar a JET_errIndexInvalidDef en su lugar. |
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. JetOpenTempTable2 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 una operación de restauración está 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. Este error solo lo devolverá Windows XP y versiones posteriores. |
JET_errTermInProgress |
No es posible completar la operación porque la instancia asociada a la sesión se está cerrando. |
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 cualquier base de datos normal en uso por el motor de base de datos permanecerá sin cambios.
Si se produce un error, no se creará la tabla temporal y no se devolverá un cursor. Se puede cambiar el estado de la base de datos temporal. El estado de cualquier base de datos normal en uso por el motor de base de datos permanecerá sin cambios.
Comentarios
Consulte JetOpenTempTable.
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
JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_UNICODEINDEX
JetCloseTable
JetCreateTableColumnIndex
JetDupCursor
JetMove
JetRollback
JetSeek
JetSetSystemParameter
Parámetros del sistema