Dela via


Utföra transaktioner i ODBC

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Viktigt!

SQL Server Native Client (SNAC) levereras inte med:

  • SQL Server 2022 (16.x) och senare versioner
  • SQL Server Management Studio 19 och senare versioner

SQL Server Native Client (SQLNCLI eller SQLNCLI11) och den äldre Microsoft OLE DB-providern för SQL Server (SQLOLEDB) rekommenderas inte för ny programutveckling.

Använd någon av följande faktorer för nya projekt:

Information om SQLNCLI som levereras som en komponent i SQL Server Database Engine (version 2012 till och med 2019) finns i det här undantaget supportlivscykel.

Transaktioner i ODBC hanteras på anslutningsnivå. När ett program slutför en transaktion checkar det in eller återställer allt arbete som slutförts via alla instruktionsreferenser på den anslutningen. För att checka in eller återställa en transaktion bör program anropa SQLEndTran i stället för att skicka en COMMIT- eller ROLLBACK-instruktion.

Ett program anropar SQLSetConnectAttr för att växla mellan de två ODBC-lägena för att hantera transaktioner:

  • Autocommit-läge

    Varje instruktion checkas in automatiskt när den har slutförts. När du kör i autocommit-läge krävs inga andra transaktionshanteringsfunktioner.

  • Manuellt incheckningsläge

    Alla körda instruktioner ingår i samma transaktion tills den stoppas specifikt genom att anropa SQLEndTran.

Autocommit-läge är standardtransaktionsläget för ODBC. När en anslutning upprättas är den i automatiskt återtagandeläge tills SQLSetConnectAttr anropas för att växla till manuellt incheckningsläge genom att ställa in läget för automatisk återtagande av. När ett program inaktiverar automatisk återtagande startar nästa instruktion som skickas till databasen en transaktion. Transaktionen gäller sedan tills programmet anropar SQLEndTran med alternativen SQL_COMMIT eller SQL_ROLLBACK. Kommandot som skickas till databasen när SQLEndTran startar nästa transaktion.

Om ett program växlar från manuell incheckning till autocommit-läge genomför drivrutinen alla transaktioner som för närvarande är öppna på anslutningen.

ODBC-program bör inte använda Transact-SQL transaktionsinstruktioner som BEGIN TRANSACTION, COMMIT TRANSACTION eller ROLLBACK TRANSACTION eftersom detta kan orsaka ett obestämt beteende i drivrutinen. Ett ODBC-program ska köras i automatiskt återtagandeläge och inte använda några funktioner eller instruktioner för transaktionshantering, eller köras i manuellt incheckningsläge och använda funktionen ODBC SQLEndTran för att antingen checka in eller återställa transaktioner.