Время существования транзакций
Область применения:SQL Server
Существует важное различие между транзакциями, запущенных в Transact-SQL хранимых процедурах, и транзакции, запущенные в управляемом коде: код среды CLR не может разбалансить состояние транзакции при входе или выходе вызова среды CLR. Необходимо учитывать следующие последствия этого факта.
Транзакция, запущенная внутри кадра СРЕДЫ CLR, должна быть зафиксирована или откатена, или в противном случае SQL Server создает ошибку при выходе кадра.
Внешняя транзакция не может быть зафиксирована или откатена внутри кода СРЕДЫ CLR.
Попытка зафиксировать транзакцию, запущенную в другой процедуре, вызывает ошибку времени выполнения.
Попытка отката транзакции, не запущенной в той же процедуре, приводит к тому, что транзакция перестанет отвечать (предотвращая любые другие побочные операции). Выполнение транзакции прекращается, пока код CLR не выйдет из области действия. Это поведение может быть полезно при обнаружении ошибки внутри процедуры и хотите убедиться, что вся транзакция завершается.