Compartilhar via


Vidas úteis de transação

Há uma diferença importante entre as transações iniciadas nos procedimentos armazenados Transact-SQL e aquelas iniciadas no 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 em um quadro CLR precisa ser confirmada ou revertida ou o SQL Server gerará um erro quando o quadro for fechado.

  • 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 causa a paralisação da transação (impedindo a ocorrência de qualquer outra operação como efeito colateral). 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.