Поделиться через


Функция 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
    );

Параметры

Экземпляр

Экземпляр базы данных, используемый для этого вызова.

psesid

Указатель на переменную, которую дескриптор сеанса инициализирует при успешном возвращении.

szUserName

Этот параметр зарезервирован.

szPassword

Этот параметр зарезервирован.

Возвращаемое значение

Эта функция позволяет возвращать любые JET_ERR, определенные в этом API. Дополнительные сведения об ошибках 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

Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, завершает работу.

При успешном выполнении дескриптор сеанса инициализируется и может использоваться для операций с базой данных.

В случае сбоя отсутствуют доступные сеансы или не удалось инициализировать новый сеанс.

Комментарии

При использовании сеансов в разных потоках необходимо уделить особое внимание. Сеанс отслеживает, в каком потоке он использовался во время JetBeginTransaction, JetCommitTransaction или JetRollback, и выдает ошибку при использовании в нескольких потоках с открытой транзакцией. JetResetSessionContext, JetSetSessionContext может изменить это поведение. Так как сеанс по-прежнему является сериализованным контекстом, и несколько операций базы данных нельзя одновременно выполнять в одном сеансе, только последовательно. Однако для одновременного доступа к базе данных можно использовать несколько сеансов. Сеансы можно использовать внутри транзакции между потоками, задав и сбросив контексты сеанса.

Дескриптор сеанса должен быть закрыт с помощью JetEndSession.

Требования

Требование Значение

Клиент

Требуется Windows Vista, Windows XP или Windows 2000 Профессиональная.

Сервер

Требуется Windows Server 2008, Windows Server 2003 или Windows 2000 Server.

Верхняя часть

Объявлено в Esent.h.

Библиотека

Используйте ESENT.lib.

DLL

Требуется ESENT.dll.

Юникод

Реализовано как JetBeginSessionW (Юникод) и JetBeginSessionA (ANSI).

См. также:

JET_ERR
JET_INSTANCE
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetDupSession
JetEndSession
JetResetSessionContext
JetRollback
JetSetSessionContext
JetStopService
Системные параметры