Compartilhar via


Vidas úteis de transação

Aplica-se a: SQL Server

Há uma diferença importante entre as transações iniciadas em procedimentos armazenados Transact-SQL e aquelas 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 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 no 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. Observe que isso pode ser útil quando você detecta um erro em seu procedimento e deseja verificar se a transação inteira é finalizada.

Confira também

Integração CLR e transações