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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per