JetBeginSession 函数
适用于: Windows |Windows Server
JetBeginSession 函数
JetBeginSession 函数启动会话,并初始化并返回 ESE 会话句柄 (JET_SESID) 。 会话控制对数据库的所有访问,并用于控制事务的范围。 会话可用于开始、提交或中止事务。 会话还用于附加、创建或打开数据库。 会话用作所有 DDL 和 DML 操作的上下文。 若要增加对数据库的并发和并行访问,可以启动多个会话。
JET_ERR JET_API JetBeginSession(
__in JET_INSTANCE instance,
__out JET_SESID* psesid,
__in_opt JET_PCSTR szUserName,
__in_opt JET_PCSTR szPassword
);
参数
instance
用于此调用的数据库实例。
psesid
指向会话句柄在成功返回时初始化的变量的指针。
szUserName
此参数为保留参数。
szPassword
此参数为保留参数。
返回值
此函数允许返回在此 API 中定义的任何 JET_ERR。 有关 Jet 错误的详细信息,请参阅 可扩展存储引擎错误 和 错误处理参数。
返回代码 |
说明 |
---|---|
JET_errSuccess |
操作已成功完成。 |
JET_errClientRequestToStopJetService |
无法完成操作,因为与会话关联的实例上的所有活动都因调用 JetStopService 而停止。 |
JET_errInstanceUnavailable |
无法完成操作,因为与会话关联的实例遇到严重错误,要求撤销对所有数据的访问权限以保护该数据的完整性。 此错误仅由 Windows XP 及更高版本返回。 |
JET_errInvalidParameter |
提供的其中一个参数包含意外值,或者包含与另一个参数的值组合时没有意义的值。 |
JET_errNotInitialized |
无法完成操作,因为与会话关联的实例尚未初始化。 |
JET_errOutOfMemory |
操作失败,因为无法分配内存。 |
JET_errOutOfSessions |
引擎将允许客户端启动的会话数是有限的。 可以使用带有 JET_paramMaxSessions 常量的 JetSetSystemParameter 更改此值。 默认会话数为 16。 有关JET_paramMaxSessions的详细信息,请参阅 系统参数 。 |
JET_errRestoreInProgress |
无法完成该操作,因为正在对与会话关联的实例执行还原操作。 |
JET_errTermInProgress |
无法完成操作,因为正在关闭与会话关联的实例。 |
成功后,会话句柄将初始化,并可用于数据库操作。
失败时,没有可用的会话或无法初始化新会话。
备注
跨不同线程使用会话时,必须小心谨慎。 会话跟踪 在 JetBeginTransaction、 JetCommitTransaction 或 JetRollback 期间使用它的线程,如果在具有打开事务的多个线程上使用,它将引发错误。 JetResetSessionContext、JetSetSessionContext 可以更改此行为。 由于会话仍然是序列化的上下文,并且不能在单个会话上并发执行多个数据库操作,只能以串行方式执行。 但是,可以使用多个会话来实现并发数据库访问。 通过设置和重置会话上下文,可以在事务内跨线程使用会话。
会话句柄应使用 JetEndSession 关闭。
要求
要求 | 值 |
---|---|
客户端 |
需要 Windows Vista、Windows XP 或 Windows 2000 专业版。 |
服务器 |
需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。 |
标头 |
在 Esent.h 中声明。 |
Library |
使用 ESENT.lib。 |
DLL |
需要ESENT.dll。 |
Unicode |
实现为 JetBeginSessionW (Unicode) 和 JetBeginSessionA (ANSI) 。 |
另请参阅
JET_ERR
JET_INSTANCE
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetDupSession
JetEndSession
JetResetSessionContext
JetRollback
JetSetSessionContext
JetStopService
系统参数