Функция JetCommitTransaction
Применимо к: Windows | Windows Server
Функция JetCommitTransaction
Функция JetCommitTransaction фиксирует изменения, внесенные в состояние базы данных во время текущей точки сохранения, и переносит их в предыдущую точку сохранения. Если самая внешняя точка сохранения зафиксирована, то изменения, внесенные во время этой точки сохранения, будут зафиксированы в состоянии базы данных, а сеанс завершит транзакцию.
JET_ERR JET_API JetCommitTransaction(
__in JET_SESID sesid,
__in JET_GRBIT grbit
);
Параметры
sesid
Сеанс, используемый для этого вызова.
grbit
Группа битов, задающая ноль или несколько следующих параметров.
Значение |
Значение |
---|---|
JET_bitCommitLazyFlush |
Транзакция фиксируется обычно, но этот API не ожидает, пока транзакция будет переброшена в файл журнала транзакций, прежде чем вернуться вызывающей объекту. Это значительно сокращает длительность операции фиксации за счет устойчивости. Любая транзакция, которая не записывается в журнал до сбоя, будет автоматически прервана во время восстановления при следующем вызове JetInit. Если указаны JET_bitWaitLastLevel0Commit или JET_bitWaitAllLevel0Commit, этот параметр игнорируется. Если этот вызов JetCommitTransaction не соответствует первому вызову JetBeginTransaction для этого сеанса, этот параметр игнорируется. Это связано с тем, что последнее действие, выполняемое в самой внешней точке сохранения, является определяющим фактором, определяющим, действительно ли вся транзакция зафиксирована на диске. |
JET_bitWaitAllLevel0Commit |
Все транзакции, ранее зафиксированные любым сеансом, которые еще не были удалены в файл журнала транзакций, будут немедленно удалены. Этот API будет ожидать, пока транзакции не будут удалены, прежде чем вернуться вызывающей объекту. Этот параметр можно использовать, даже если сеанс в данный момент не входит в транзакцию. Этот параметр нельзя использовать в сочетании с любым другим параметром. Этот параметр доступен только в Windows Server 2003. |
JET_bitWaitLastLevel0Commit |
Если сеанс ранее фиксировал какие-либо транзакции и они еще не были удалены в файл журнала транзакций, они должны быть немедленно удалены. Этот API будет ожидать, пока транзакции не будут удалены, прежде чем вернуться вызывающей объекту. Это полезно, если приложение ранее зафиксировало несколько транзакций с помощью JET_bitCommitLazyFlush и теперь хочет записать их все на диск. Этот параметр можно использовать, даже если сеанс в данный момент не входит в транзакцию. Этот параметр нельзя использовать в сочетании с любым другим параметром. |
Возвращаемое значение
Эта функция возвращает тип данных JET_ERR с одним из следующих кодов возврата. Дополнительные сведения о возможных ошибках ESE см. в разделах Ошибки подсистемы расширяемого хранилища и Параметры обработки ошибок.
Код возврата |
Описание |
---|---|
JET_errSuccess |
Операция выполнена успешно. |
JET_errClientRequestToStopJetService |
Невозможно выполнить операцию, так как все действия экземпляра, связанного с сеансом, прекратились в результате вызова JetStopService. |
JET_errInstanceUnavailable |
Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, столкнулся с неустранимой ошибкой, требующей отмены доступа ко всем данным для защиты целостности этих данных. Эта ошибка будет возвращена только в Windows XP и более поздних выпусках. |
JET_errInvalidgrbit |
Один из запрошенных вариантов был недопустим или не реализован. Эта ошибка будет возвращена JetCommitTransaction , если:
|
JET_errNotInitialized |
Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, еще не инициализирован. |
JET_errNotInTransaction |
Операция завершилась сбоем, так как данный сеанс не находится в транзакции. |
JET_errRestoreInProgress |
Невозможно выполнить операцию, так как операция восстановления выполняется в экземпляре, связанном с сеансом. |
JET_errSessionSharingViolation |
Один и тот же сеанс нельзя использовать для нескольких потоков одновременно. Эта ошибка будет возвращена только в Windows XP и более поздних выпусках. |
JET_errTermInProgress |
Невозможно завершить операцию, так как экземпляр, связанный с сеансом, завершает работу. |
При успешном выполнении все изменения, внесенные в базу данных во время текущей точки сохранения для данного сеанса, будут зафиксированы, и эта точка сохранения будет завершена. Если последняя точка сохранения для сеанса была завершена, транзакция при необходимости будет сохранена в файле журнала транзакций, и сеанс завершит транзакцию.
При сбое состояние транзакций сеанса останется неизменным. Изменение состояния базы данных не произойдет. Приложение должно вызвать JetRollback , чтобы прервать транзакцию.
Комментарии
Для сопоставления каждого вызова JetBeginTransaction для определенного сеанса должен быть один вызов JetCommitTransaction или JetRollback.
Требования
Требование | Значение |
---|---|
Клиент |
Требуется Windows Vista, Windows XP или Windows 2000 Professional. |
Сервер |
Требуется Windows Server 2008, Windows Server 2003 или Windows 2000 Server. |
Верхняя часть |
Объявлено в Esent.h. |
Библиотека |
Используйте ESENT.lib. |
DLL |
Требуется ESENT.dll. |
См. также:
JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetRollback
JetStopService