Condividi tramite


Durata delle transazioni

Si applica a:SQL Server

Esiste una differenza importante tra le transazioni avviate nelle stored procedure Transact-SQL e quelle avviate nel codice gestito: il codice CLR (Common Language Runtime) non può bilanciare lo stato della transazione all'ingresso o all'uscita di una chiamata CLR. Tenere presenti le implicazioni seguenti correlate a questa differenza:

  • Una transazione avviata all'interno di un frame CLR deve essere eseguita il commit o il rollback oppure SQL Server genera un errore quando il frame viene chiuso.

  • Non è possibile eseguire il commit o il rollback di una transazione esterna all'interno del codice CLR.

  • Un tentativo di esecuzione del commit di una transazione non avviato nella stessa procedura provoca un errore di runtime.

  • Un tentativo di rollback di una transazione non avviato nella stessa procedura causa l'arresto della transazione (impedendo l'esecuzione di un'altra operazione laterale). La transazione viene interrotta fino a quando il codice CLR non abbandona l'ambito. Si noti che questo comportamento può risultare utile quando si rileva un errore all'interno della procedura e si desidera verificare che venga terminata l'intera transazione.

Vedere anche

Integrazione con CLR e transazioni