Compartilhar via


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.

  • de integração e transações clr