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:
È necessario eseguire il commit o il rollback di una transazione avviata all'interno di un frame CLR 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 eseguire il rollback di una transazione non avviata nella stessa procedura causa l'interruzione della risposta della transazione (impedendo l'esecuzione di qualsiasi altra operazione collaterale). 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.