Явные транзакции

Явными транзакциями являются транзакции, для которых явно назначаются запуск и остановка.

Приложения DB-Library и сценарии Transact-SQL используют для определения явных транзакций инструкции Transact-SQL BEGIN TRANSACTION, COMMIT TRANSACTION, COMMIT WORK, ROLLBACK TRANSACTION и ROLLBACK WORK.

  • BEGIN TRANSACTION
    Отмечает точку запуска явной транзакции для соединения.

  • COMMIT TRANSACTION или COMMIT WORK
    Используется для успешного завершения транзакции, если не было ошибок. Все изменения данных, сделанные в транзакции, становятся постоянной частью базы данных. Ресурсы, заблокированные транзакцией, высвобождаются.

  • ROLLBACK TRANSACTION или ROLLBACK WORK
    Используется для удаления транзакции, если были ошибки. Все измененные транзакцией данные возвращаются в то состояние, в котором они были в момент запуска транзакции. Ресурсы, заблокированные транзакцией, высвобождаются.

Также можно использовать явные транзакции в OLE DB. Для запуска транзакции вызовите метод ITransactionLocal::StartTransaction. Для завершения транзакции без автоматического запуска другой транзакции вызовите ITransaction::Commit или ITransaction::Abort со значением параметра fRetaining равным FALSE.

В ADO используйте метод BeginTrans на объекте Connection для запуска явной транзакции. Для завершения транзакции вызовите методы CommitTrans или RollbackTrans объекта Connection.

В управляемом поставщике ADO.NET SqlClient для запуска явной транзакции используйте метод BeginTransaction на объекте SqlConnection. Для завершения транзакции вызовите методы Commit() или Rollback() объекта SqlTransaction.

Интерфейс ODBC API не поддерживает явные транзакции, он поддерживает только автоматическую фиксацию и неявные транзакции.

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

ПримечаниеПримечание

В сеансе MARS явная транзакция, которая запускается инструкцией Transact-SQL BEGIN TRANSACTION, становится транзакцией контекста пакета. Если транзакция контекста пакета не зафиксирована при завершении пакета, и для нее не был выполнен откат, то SQL Server выполняет откат транзакции автоматически. Дополнительные сведения см. в разделах Управление транзакциями (компонент Database Engine) и Инструкции транзакций (Transact-SQL).