Delen via


Transacties uitvoeren in ODBC

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Belangrijk

SNAC (SQL Server Native Client ) wordt niet geleverd met:

  • SQL Server 2022 (16.x) en latere versies
  • SQL Server Management Studio 19 en latere versies

De SQL Server Native Client (SQLNCLI of SQLNCLI11) en de verouderde Microsoft OLE DB-provider voor SQL Server (SQLOLEDB) worden niet aanbevolen voor de ontwikkeling van nieuwe toepassingen.

Gebruik een van de volgende stuurprogramma's voor nieuwe projecten:

Zie deze uitzondering voor de levenscyclus van ondersteuning voor SQLNCLI die wordt geleverd als onderdeel van SQL Server Database Engine (versies 2012 tot en met 2019).

Transacties in ODBC worden beheerd op verbindingsniveau. Wanneer een toepassing een transactie voltooit, worden alle werkzaamheden doorgevoerd of teruggedraaid via alle instructiegrepen voor die verbinding. Als u een transactie wilt doorvoeren of terugdraaien, moeten toepassingen SQLEndTran aanroepen in plaats van een COMMIT- of ROLLBACK-instructie in te dienen.

Een toepassing roept SQLSetConnectAttr aan om te schakelen tussen de twee ODBC-modi voor het beheren van transacties:

  • Modus Automatisch aanpassen

    Elke instructie wordt automatisch doorgevoerd wanneer deze is voltooid. Wanneer u in de modus Voor automatisch aanpassen uitvoert, zijn er geen andere functies voor transactiebeheer vereist.

  • Modus Handmatig doorvoeren

    Alle uitgevoerde instructies worden opgenomen in dezelfde transactie totdat deze specifiek wordt gestopt door SQLEndTran aan te roepen.

De autotoewijzingsmodus is de standaardtransactiemodus voor ODBC. Wanneer er een verbinding wordt gemaakt, bevindt deze zich in de autocommit-modus totdat SQLSetConnectAttr wordt aangeroepen om over te schakelen naar de modus handmatig doorvoeren door de autocommit-modus uit te stellen. Wanneer een toepassing automatisch toewijzen uitschakelt, start de volgende instructie die naar de database wordt verzonden een transactie. De transactie blijft vervolgens van kracht totdat de toepassing SQLEndTran aanroept met de SQL_COMMIT- of SQL_ROLLBACK-opties. De opdracht die naar de database wordt verzonden nadat SQLEndTran de volgende transactie heeft gestart.

Als een toepassing overschakelt van handmatig doorvoeren naar de modus voor automatisch toewijzen, voert het stuurprogramma transacties door die momenteel zijn geopend op de verbinding.

ODBC-toepassingen mogen geen gebruik maken van Transact-SQL transactie-instructies, zoals BEGIN TRANSACTION, COMMIT TRANSACTION of ROLLBACK TRANSACTION, omdat dit onbepaald gedrag in het stuurprogramma kan veroorzaken. Een ODBC-toepassing moet worden uitgevoerd in de modus automatisch toewijzen en geen transactiebeheerfuncties of instructies gebruiken, of worden uitgevoerd in de modus handmatig doorvoeren en de functie ODBC SQLEndTran gebruiken om transacties door te voeren of terug te draaien.