Sdílet prostřednictvím


Ž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.