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