Životnost transakcí
platí pro:SQL Server
Mezi transakcemi spuštěným v Transact-SQL uložených procedur je důležitý rozdíl a transakce spuštěné ve spravovaném kódu: Kód CLR (Common Language Runtime) nemůže zrušit rovnováhu stavu transakce při vstupu nebo ukončení vyvolání CLR. Mějte na paměti následující důsledky tohoto rozdílu:
Transakce spuštěná uvnitř rámce CLR musí být potvrzena nebo vrácena zpět, nebo jinak SQL Server vygeneruje chybu při ukončení rámce.
Vnější transakci nelze potvrdit nebo vrátit zpět uvnitř kódu CLR.
Pokus o potvrzení transakce není spuštěn ve stejném postupu způsobí chybu za běhu.
Pokus o vrácení zpět transakce nezačíná stejným postupem způsobí, že transakce přestane reagovat (brání tomu, aby došlo k jiné operaci vedlejšího účinku). Transakce se ukončí, dokud kód CLR nevyjde z rozsahu. Toto chování může být užitečné, když zjistíte chybu uvnitř procedury a chcete zajistit, aby se celá transakce ukončila.