JetGetRecordSize 函数

适用于: Windows |Windows Server

JetGetRecordSize 函数

JetGetRecordSize 函数从所需位置检索记录大小信息。

Windows Vista:Windows Vista 中引入了 JetGetRecordSize

    JET_ERR JET_API JetGetRecordSize(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __out         JET_RECSIZE* precsize,
      __in          const JET_GRBIT grbit
    );

parameters

sesid

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

tableid

标识将用于 API 调用的表或游标。 光标必须定位在记录上,或准备更新。

precsize

指向 JET_RECSIZE 结构的输出缓冲区的指针。

grbit

这是以下一个或多个值。

含义

JET_bitRecordSizeInCopyBuffer

这会检索准备更新的复制缓冲区中的记录的大小。 否则, 表 id 或游标必须定位在记录上,并将使用该记录。

JET_bitRecordSizeRunningTotal

指定此位后, JET_RECSIZE 在填充内容之前不会归零,从而有效地充当访问或更新的多个记录的统计信息的累积。

JET_bitRecordSizeLocal

这会导致 API 忽略非内部的 Long 值。 例如,仅使用页面上的本地记录。

返回值

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

返回代码

说明

JET_errSuccess

操作已成功完成。

JET_errInvalidGrbit

请求的选项之一无效或未实现。 指定非法 grbit 时,JetGetRecordSize 函数将返回此错误。

JET_errNotInitialized

无法完成操作,因为尚未初始化与会话关联的实例。

JET_errClientRequestToStopJetService

无法完成操作,因为与会话关联的实例上的所有活动都因调用 JetStopService 而停止。

JET_errInstanceUnavailable

无法完成操作,因为与会话关联的实例遇到严重错误,要求撤销对所有数据的访问权限以保护该数据的完整性。

Windowsxp: JET_errInstanceUnavailable将仅由 Windows XP 及更高版本返回。

JET_errTermInProgress

无法完成操作,因为正在关闭与会话关联的实例。

JET_errRestoreInProgress

无法完成该操作,因为正在对与会话关联的实例执行还原操作。

JET_errSessionSharingViolation

同时从多个线程使用同一会话是非法的。

Windowsxp: JET_errInstanceUnavailable将仅由 Windows XP 及更高版本返回。

JET_errNoCurrentRecord

如果光标定位不正确,则可能会发生这种情况。

JET_errRecordDeleted

如果游标未定位在事务中,则当另一个线程从此会话下删除记录时,可能会发生这种情况。

JET_errInvalidParameter

如果传递了 NULLprecsize, 则可以返回此值。

备注

JET_RECSIZEcbOverhead 字段中累积的键的大小受JET_bitRecordSizeInCopyBuffer的影响。 如果指定了此位,则 cbOverhead 字段中累积的密钥大小为完整密钥大小。 如果未使用此位,则累积的密钥大小将不包括由于键前缀压缩而保存的任何大小。

要求

要求

客户端

需要 Windows Vista。

服务器

需要 Windows Server 2008。

标头

在 Esent.h 中声明。

Library

使用 ESENT.lib。

DLL

需要ESENT.dll。

另请参阅

JET_ERR
JET_GRBIT
JET_SESID
JET_RECSIZE
JET_TABLEID