JET_OPENTEMPORARYTABLE 结构

适用于: Windows |Windows Server

JET_OPENTEMPORARYTABLE 结构

JET_OPENTEMPORARYTABLE 结构包含一个易于扩展的 JET_OPENTEMPORARYTABLE 函数的参数集合。 此结构是与 JET_TABLECREATE 结构等效的临时表。

Windows Vista: Windows Vista 中引入了 JET_OPENTEMPORARYTABLE 结构。

    typedef struct tagJET_OPENTEMPORARYTABLE {
      unsigned long cbStruct;
      const JET_COLUMNDEF* prgcolumndef;
      unsigned long ccolumn;
      JET_UNICODEINDEX* pidxunicode;
      JET_GRBIT grbit;
      JET_COLUMNID* prgcolumnid;
      unsigned long cbKeyMost;
      unsigned long cbVarSegMac;
      JET_TABLEID tableid;
    } JET_OPENTEMPORARYTABLE;

成员

cbStruct

此结构的大小(以字节为单位) (将来的扩展) 。 必须将其设置为 sizeof ( JET_TABLECREATE ) (以字节为单位)。

prgcolumndef

临时表中创建的列的列定义。

与临时表一起使用的列定义选项存在重要限制。 有关详细信息,请参阅备注部分。

除了通常的列定义选项外,还可以指定仅与临时表上下文相关的以下零个或多个选项。

含义

JET_bitColumnTTDescending

临时表的键列的排序顺序应为降序而不是升序。 如果指定此选项而不JET_bitColumnTTKey则忽略此选项。

JET_bitColumnTTKey

该列将是临时表的键列。

输入数组中指定的此选项的列定义顺序将确定临时表的每个键列的优先级。 数组中设置了此选项的第一个列定义将是最重要的键列等。 如果请求的键列数超过数据库引擎所支持的键列数,则对于不受支持的键列,将忽略此选项。

ccolumn

请参阅 prgcolumndef

pidxunicode

用于比较临时表中任何 Unicode 键列数据的区域设置 ID 和规范化标志。

如果此参数不存在且 lcid 参数不存在,则默认 LCID 将用于比较临时表中的任何 Unicode 键列。 默认 LCID 为美国英语区域设置。

如果此参数不存在,则默认规范化标志将用于比较临时表中的任何 Unicode 键列数据。 默认规范化标志为:NORM_IGNORECASE、NORM_IGNOREKANATYPE和NORM_IGNOREWIDTH。

grbit

一组指定以下选项的零个或多个位。

含义

JET_bitTTIndexed

此选项要求临时表足够灵活,允许使用 JetSeek 按索引键查找记录。

如果不需要此功能,则最好不要请求此功能。 如果未请求此功能,则临时表管理器可能能够选择用于管理临时表的策略,从而提高性能。

JET_bitTTUnique

从临时表中的最后一组记录中删除具有重复索引键的记录的请求。

在 Windows Server 2003 之前,数据库引擎始终假定此选项生效,因为所有聚集索引也必须是主键,因此必须是唯一的。 从 Windows Server 2003 开始,现在可以在指定JET_bitTTForwardOnly选项时创建不删除重复项的临时表。

一般情况下,无法知道哪些重复项会成功,哪些重复项将被丢弃。 但是,当请求JET_bitTTErrorOnDuplicateInsertion选项时,具有给定索引键的第一条记录将始终成功插入临时表中。

JET_bitTTUpdatable

请求临时表足够灵活,以便允许随后更改以前插入的记录。 如果不需要此功能,则最好不要请求此功能。

如果未请求此功能,则临时表管理器可能能够选择用于管理临时表的策略,从而提高性能。

JET_bitTTScrollable

请求临时表足够灵活,允许使用 JetMove 按任意顺序和方向扫描记录。

如果不需要此功能,则最好不要请求此功能。 如果未请求此功能,则临时表管理器可能能够选择用于管理临时表的策略,从而提高性能。

JET_bitTTSortNullsHigh

请求 NULL 键列值排序离索引末尾更近,而不是非 NULL 键列值。

JET_bitTTForceMaterialization

强制临时表管理器放弃搜索使用管理临时表的最佳策略,从而增强性能。

JET_bitTTErrorOnDuplicateInsertion

尝试插入索引键与之前插入的记录相同的记录将立即失败,并JET_errKeyDuplicate。 如果未请求此选项,则会立即检测到重复项并失败,或稍后以无提示方式删除,具体取决于数据库引擎根据请求的功能选择实现临时表的策略。

如果不需要此功能,则最好不要请求此功能。 如果未请求此功能,则临时表管理器可能能够选择用于管理临时表的策略,从而提高性能。

JET_bitTTForwardOnly

仅当临时表管理器可以使用针对中间查询结果优化的实现时,才会创建临时表。 如果临时表的任何特征都会阻止使用此优化,则操作将失败并出现JET_errCannotMaterializeForwardOnlySort。

此选项的副作用是允许临时表包含具有重复索引键的记录。 有关详细信息,请参阅JET_bitTTUnique。

Windows Server 2003: 此选项仅适用于 Windows Server 2003 及更高版本。

prgcolumnid

接收在创建临时表期间生成的列 ID 数组的输出缓冲区。

此数组中的列 ID 将完全对应于列定义的输入数组。 因此,此缓冲区的大小必须与输入数组的大小相对应。

cbKeyMost

表示给定行的键的最大大小。

可以设置最大密钥大小来控制如何截断键。 键截断非常重要,因为它可能会影响行被视为不同的时间。

如果此参数设置为 0 或 JET_cbKeyMostMin (255) 则最大密钥大小及其语义将保持与 Windows Server 2003 和早期版本支持的最大密钥大小相同。 也可以将此参数设置为更大的值,作为实例 (JET_paramDatabasePageSize) 的数据库页大小的函数。 有关详细信息,请参阅JET_paramKeyMost。

cbVarSegMac

将用于为给定行构造键的任何可变长度列的最大数据量。

此参数可用于控制任何给定键列使用的键空间量。 此限制以字节为单位。 如果此参数为零或与 cbKeyMost 参数相同,则没有任何限制有效。

tableid

由于成功调用 JetOpenTemporaryTable 而创建的临时表的表句柄。

要求

要求

客户端

需要 Windows Vista。

服务器

需要 Windows Server 2008。

标头

在 Esent.h 中声明。

另请参阅

JET_TABLECREATE
JET_COLUMNDEF
JET_UNICODEINDEX
JET_GRBIT
JET_COLUMNID
JET_TABLEID
JetOpenTemporaryTable
可扩展存储引擎系统参数