Tempo de vida da transação
Aplica-se:SQL Server
Há uma diferença importante entre as transações iniciadas em Transact-SQL procedimentos armazenados e as transações iniciadas no código gerenciado: o código CLR (Common Language Runtime) não pode desbalancear o estado da transação na entrada ou saída de uma invocação CLR. Esteja ciente das seguintes implicações dessa diferença:
Uma transação iniciada dentro de um quadro CLR deve ser confirmada ou revertida, caso contrário, o SQL Server gerará um erro quando o quadro for encerrado.
Uma transação externa não pode ser confirmada ou revertida dentro do código CLR.
Uma tentativa de confirmar uma transação não iniciada no mesmo procedimento causa um erro em tempo de execução.
Uma tentativa de reverter uma transação não iniciada no mesmo procedimento faz com que a transação pare de responder (impedindo que qualquer outra operação de efeito colateral aconteça). A transação é descontinuada até que o código CLR saia do escopo. Esse comportamento pode ser útil quando você detecta um erro dentro do procedimento e deseja garantir que toda a transação seja encerrada.