Esecuzione di transazioni in ODBC

Si applica a:SQL ServerDatabase SQL diAzure Istanzagestita di SQL di Azure Azure Synapse Analytics PlatformSystem (PDW)

Importante

SQL Server Native Client (spesso abbreviato SNAC) è stato rimosso da SQL Server 2022 (16.x) e SQL Server Management Studio 19 (SSMS). SQL Server Native Client (SQLNCLI o SQLNCLI11) e il provider Microsoft OLE DB legacy per SQL Server (SQLOLEDB) non sono consigliati per lo sviluppo di nuove applicazioni. Passare al nuovo Microsoft OLE DB Driver (MSOLEDBSQL) per SQL Server o alla versione più recente di Microsoft ODBC Driver per SQL Server . Per SQLNCLI fornito come componente del motore di database di SQL Server (versioni da 2012 a 2019), vedere questa eccezione relativa al ciclo di vita del supporto.

Le transazioni in ODBC vengono gestite a livello di connessione. Quando un'applicazione completa una transazione, esegue il commit o il rollback di tutte le operazioni effettuate tramite tutti gli handle di istruzione nella connessione. Per eseguire il commit o il rollback di una transazione, le applicazioni devono chiamare SQLEndTran anziché inviare un'istruzione COMMIT o ROLLBACK.

Un'applicazione chiama SQLSetConnectAttr per passare tra le due modalità ODBC di gestione delle transazioni:

  • Modalità autocommit

    Di ogni istruzione completata correttamente viene automaticamente eseguito il commit. Quando si utilizza la modalità autocommit, non sono necessarie altre funzioni di gestione delle transazioni.

  • Modalità di commit manuale

    Tutte le istruzioni eseguite vengono incluse nella stessa transazione fino a quando non viene arrestata specificamente chiamando SQLEndTran.

La modalità autocommit è la modalità di esecuzione delle transazioni predefinita per ODBC. Quando viene stabilita una connessione, è in modalità autocommit finché SQLSetConnectAttr non viene chiamato per passare alla modalità di commit manuale impostando la modalità autocommit disattivata. Quando un'applicazione disattiva l'autocommit, l'istruzione successiva inviata al database avvia una transazione. La transazione rimane quindi attiva fino a quando l'applicazione non chiama SQLEndTran con le opzioni SQL_COMMIT o SQL_ROLLBACK. Il comando inviato al database dopo che SQLEndTran avvia la transazione successiva.

Se un'applicazione passa dalla modalità di commit manuale alla modalità autocommit, il driver esegue il commit di tutte le transazioni attualmente aperte nella connessione.

Le applicazioni ODBC non devono utilizzare istruzioni per transazioni Transact-SQL quali BEGIN TRANSACTION, COMMIT TRANSACTION o ROLLBACK TRANSACTION, in quanto tali istruzioni possono provocare un comportamento imprevedibile nel driver. Un'applicazione ODBC deve essere eseguita in modalità autocommit e non utilizzare funzioni o istruzioni di gestione delle transazioni oppure eseguire in modalità di commit manuale e usare la funzione ODBC SQLEndTran per eseguire il commit o il rollback delle transazioni.

Vedi anche

Esecuzione di transazioni (ODBC)