JetBeginSession 函数

适用于:Windows |Windows服务器

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
    );

参数

实例

要用于此调用的数据库实例。

psesid

指向会话句柄在成功返回时初始化的变量的指针。

szUserName

此参数为保留参数。

szPassword

此参数为保留参数。

返回值

此函数允许返回此 API 中定义的任何 JET_ERR。 有关 Jet 错误的详细信息,请参阅可扩展存储引擎错误错误处理参数

返回代码

说明

JET_errSuccess

操作已成功完成。

JET_errClientRequestToStopJetService

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

JET_errInstanceUnavailable

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

此错误仅由 Windows XP 和更高版本返回。

JET_errInvalidParameter

提供的参数之一包含意外值或包含与另一个参数的值组合时没有意义的值。

JET_errNotInitialized

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

JET_errOutOfMemory

操作失败,因为无法分配内存。

JET_errOutOfSessions

引擎将允许客户端启动的会话数受到限制。 可以使用 JetSetSystemParameter 和 JET_paramMaxSessions 常量更改此值。 默认会话数为 16。 有关JET_paramMaxSessions的详细信息,请参阅 系统参数

JET_errRestoreInProgress

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

JET_errTermInProgress

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

成功时,会话句柄已初始化,并可用于数据库操作。

失败时,没有可用的会话或无法初始化新会话。

注解

在跨不同线程使用会话时,必须使用谨慎的注意。 会话跟踪 在 JetBeginTransactionJetCommitTransactionJetRollback 期间使用的线程,如果在具有打开事务的多个线程上使用,则会引发错误。 JetResetSessionContextJetSetSessionContext 可以更改此行为。 由于会话仍然是序列化上下文,因此不能同时对单个会话执行多个数据库操作,而只能串行执行。 但是,可以使用多个会话来实现并发数据库访问。 可以通过设置和重置会话上下文,在跨线程的事务内使用会话。

会话句柄应使用 JetEndSession 关闭。

要求

要求

客户端

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

Server

需要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
系统参数