JET_OPENTEMPORARYTABLE结构

适用于:Windows |Windows服务器

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。

Server

需要Windows Server 2008。

标头

在 Esent.h 中声明。

另请参阅

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