Partilhar via


Tempo de vida das transações

Aplica-se a:SQL Server

Há uma diferença importante entre transações iniciadas em procedimentos armazenados Transact-SQL e transações iniciadas em código gerenciado: o código CLR (Common Language Runtime) não pode desequilibrar o estado da transação na entrada ou saída de uma chamada CLR. Esteja ciente das seguintes implicações desta diferença:

  • Uma transação iniciada dentro de um quadro CLR deve ser confirmada ou revertida, caso contrário, o SQL Server gera um erro quando o quadro é 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ê deteta um erro dentro do procedimento e deseja garantir que toda a transação seja encerrada.