Функция 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
Системные параметры