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_RECSIZE的 cbOverhead 字段中累积的键的大小受JET_bitRecordSizeInCopyBuffer的影响。 如果指定了此位,则 cbOverhead 字段中累积的密钥大小为完整密钥大小。 如果未使用此位,则累积的密钥大小将不包括由于键前缀压缩而保存的任何大小。
要求
要求 | 值 |
---|---|
客户端 |
需要 Windows Vista。 |
服务器 |
需要 Windows Server 2008。 |
标头 |
在 Esent.h 中声明。 |
Library |
使用 ESENT.lib。 |
DLL |
需要ESENT.dll。 |