Неявные транзакции
Если соединение выполняется в режиме неявных транзакций, экземпляр компонента SQL Server Database Engine автоматически начинает новую транзакцию после фиксации или отката текущей. Для запуска таких транзакций ничего делать не нужно; необходимо только фиксировать или выполнять откат каждой транзакции. Режим неявных транзакций формирует непрерывную цепь транзакций.
После установления на соединении режима неявных транзакций экземпляр компонента Database Engine автоматически запускает транзакцию, если вначале выполняет любую из следующих инструкций:
ALTER TABLE |
INSERT |
CREATE |
OPEN |
DELETE |
REVOKE |
DROP |
SELECT |
FETCH |
TRUNCATE TABLE |
GRANT |
UPDATE |
Транзакция продолжает оставаться активной до тех пор, пока не будет выдана инструкция COMMIT или ROLLBACK. После фиксации или отката первой транзакции экземпляр компонента Database Engine автоматически запускает новую транзакцию каждый раз, когда на соединении выполняется какая-либо из этих инструкций. Экземпляр продолжает формировать цепь неявных транзакций до тех пор, пока не будет выключен режим неявных транзакций.
Режим неявных транзакций устанавливается или при помощи инструкции языка Transact-SQL SET, или функциями и методами API базы данных.
Примечание |
---|
В сеансе нескольких активных результирующих наборов (MARS) неявная транзакция языка Transact-SQL становится транзакцией контекста пакета. Если при завершении пакета транзакция контекста пакета не зафиксирована или для нее не был выполнен откат, SQL Server автоматически выполняет откат транзакции. Дополнительные сведения см. в разделах Управление транзакциями (компонент Database Engine) и Инструкции транзакций (Transact-SQL). |