JetGetTableInfo 函数

适用于: Windows |Windows Server

JetGetTableInfo 函数

JetGetTableInfo 函数检索有关数据库中表的各种信息。

    JET_ERR JET_API JetGetTableInfo(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __out         void* pvResult,
      __in          unsigned long cbMax,
      __in          unsigned long InfoLevel
    );

参数

sesid

用于 API 调用的数据库会话上下文。

tableid

信息应用于的表。

pvResult

指向将接收信息的缓冲区的指针。 缓冲区的类型取决于 InfoLevel。 调用方负责适当地对齐缓冲区。

cbMax

pvResult 中传递的缓冲区的大小(以字节为单位)。

InfoLevel

将为 tableid 指定的表检索的信息类型。 pvResult 中存储的数据的格式取决于 InfoLevel

可以为此参数设置以下选项:

含义

JET_TblInfo

pvResult 被解释为 JET_OBJECTINFO 结构。 如果该方法成功 ,JET_OBJECTINFO结构 将填充相应的数据。 如果失败,则表示内容未定义。

JET_TblInfoDbid

pvResult 被视为两个 JET_DBID 对象的数组。 拥有表的数据库的数据库标识符存储在此数组中两次。

JET_TblInfoDumpTable

JET_TblInfoDumpTable已弃用。 API 将返回JET_errFeatureNotAvailable。

JET_TblInfoName

JET_TblInfoName检索表的名称并将其存储在 pvResult 中。 如果缓冲区太小,则行为未定义。

JET_TblInfoMostMany

JET_TblInfoMostMany检索表的名称并将其存储在 pvResult 中。 如果缓冲区太小,则行为未定义。

JET_TblInfoOLC

JET_TblInfoOLC已弃用。 API 将返回JET_errFeatureNotAvailable。

JET_TblInfoRvt

JET_TblInfoRvt已弃用。 API 将返回JET_errQueryNotSupported。

JET_TblInfoResetOLC

JET_TblInfoResetOLC已弃用。 API 将返回JET_errFeatureNotAvailable。

JET_TblInfoSpaceAlloc

pvResult 被解释为两个 ULONG 的数组:

  • 第一个 ULONG 是表中的页数。

  • 第二个 ULONG 是表的页的目标密度。

JET_TblInfoSpaceAvailable

pvResult 被解释为 ULONGULONG 是表、其索引和长值树中可用页数的总和。

JET_TblInfoSpaceOwned

pvResult 被解释为 ULONGULONG 是表拥有的页数的总和,表 (包括其索引,长值树及其中任何可用页) 。

JET_TblInfoSpaceUsage

API 的行为取决于传递给 API 的缓冲区的大小。 两个 cbMax 值必须至少 ( 2 * 大小 ( ULONG ) ) 。

  • 如果 cbMax ( 2 * sizeof ( ULONG ) ) , 则 pvResult 将解释为两个 ULONG 的数组:

    • 第一个 ULONG 是表的自有盘区数。

    • 第二个 ULONG 是表的可用盘区数。

  • pvResult 被解释为数组:

    • 第一个 ULONG 是表的自有盘区数。

    • 第二个 ULONG 是表的可用盘区数。

JET_TblInfoTemplateTableName

pvResult 被解释为字符串缓冲区。 缓冲区必须至少JET_cbNameMost + 1,包括终止 NULL。 如果表是派生表,则将使用派生表继承其 DDL 的表的名称填充缓冲区。 如果该表不是派生表,则缓冲区将包含一个空字符串。

返回值

此函数返回具有以下返回代码之一 的JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅 可扩展存储引擎错误错误处理参数

返回代码

说明

JET_errSuccess

操作已成功完成。

JET_errBufferTooSmall

缓冲区太小。

JET_errFeatureNotAvailable

指定了已弃用 的 InfoLevel

JET_errInvalidBufferSize

缓冲区的大小不正确。

JET_errInvalidOperation

传入的表是一个临时表,无法为临时表检索请求的 InfoLevel

JET_errObjectNotFound

传入的表是一个临时表,无法为临时表检索请求的 InfoLevel

JET_errQueryNotSupported

不支持 InfoLevel

JET_errTableInUse

该表正由另一个数据库操作使用。

JET_errTableLocked

表被另一个数据库操作锁定。

JET_wrnTableInUseBySystem

系统正在使用该表。 此警告不严重。

备注

某些信息对临时表无效 (请参阅 JetOpenTempTable) 。

表统计信息包括聚集索引中的记录数和页数 (即包含记录数据的索引) 。 索引统计信息使用 JetGetIndexInfo 或 JetGetTableIndexInfo名称单独访问。

要求

要求

客户端

需要 Windows Vista、Windows XP 或 Windows 2000 Professional。

服务器

需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。

标头

在 Esent.h 中声明。

Library

使用 ESENT.lib。

DLL

需要ESENT.dll。

Unicode

实现为 JetGetTableInfoW (Unicode) 和 JetGetTableInfoA (ANSI) 。

另请参阅

JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_OBJECTINFO
JetGetIndexInfo
JetGetObjectInfo
JetGetTableIndexInfo
JetOpenTempTable