Megosztás a következőn keresztül:


Tranzakciók végrehajtása az ODBC-ben

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Fontos

Az SQL Server natív ügyfele (SNAC) nem a következőkkel szállítható:

  • SQL Server 2022 (16.x) és újabb verziók
  • AZ SQL Server Management Studio 19- és újabb verziói

Az SQL Server natív ügyfele (SQLNCLI vagy SQLNCLI11) és az örökölt Microsoft OLE DB Provider for SQL Server (SQLOLEDB) nem ajánlott az új alkalmazásfejlesztéshez.

Új projektek esetén használja az alábbi illesztőprogramok egyikét:

Az SQL Server adatbázismotor összetevőjeként (2012–2019-ben) futó SQLNCLI esetében tekintse meg ezt a támogatási életciklus-kivételt.

Az ODBC-tranzakciók a kapcsolat szintjén vannak kezelve. Amikor egy alkalmazás végrehajt egy tranzakciót, véglegesíti vagy visszaállítja az összes elvégzett munkát a kapcsolat összes utasításkezelőjén keresztül. Tranzakció véglegesítéséhez vagy visszaállításához az alkalmazásoknak a COMMIT vagy ROLLBACK utasítás elküldése helyett az SQLEndTran-t kell meghívniuk.

Egy alkalmazás meghívja az SQLSetConnectAttr-et , hogy váltson a tranzakciók kezelésének két ODBC-módja között:

  • Automatikus feladatátvételi mód

    A rendszer minden utasítást automatikusan véglegesített, amikor sikeresen befejeződött. Automatikus kiírási módban való futtatáskor nincs szükség más tranzakciókezelési függvényre.

  • Manuális véglegesítési mód

    Az összes végrehajtott utasítás ugyanabban a tranzakcióban szerepel, amíg az SQLEndTran meghívásával kifejezetten le nem állítja.

Az automatikus kitöltési mód az ODBC alapértelmezett tranzakciós módja. Amikor létrejön egy kapcsolat, az automatikus küldési módban van, amíg az SQLSetConnectAttr meghívása nem történik, hogy manuális véglegesítési módra váltson az automatikus küldési mód kikapcsolásával. Amikor egy alkalmazás kikapcsolja az automatikus kiküldést, az adatbázisnak küldött következő utasítás tranzakciót indít el. A tranzakció ezután mindaddig érvényben marad, amíg az alkalmazás nem hívja meg az SQLEndTran-t a SQL_COMMIT vagy SQL_ROLLBACK beállításokkal. Az SQLEndTran után az adatbázisnak küldött parancs elindítja a következő tranzakciót.

Ha egy alkalmazás manuális véglegesítésről automatikus küldési módra vált, az illesztőprogram véglegesíti a kapcsolaton jelenleg megnyitott tranzakciókat.

Az ODBC-alkalmazások nem használhatnak olyan Transact-SQL tranzakciós utasításokat, mint a BEGIN TRANSACTION, a COMMIT TRANSACTION vagy a ROLLBACK TRANSACTION, mert ez meghatározhatatlan viselkedést okozhat az illesztőprogramban. Az ODBC-alkalmazásoknak automatikus küldési módban kell futniuk, és nem szabad tranzakciókezelési függvényeket vagy utasításokat használniuk, vagy manuális véglegesítési módban kell futniuk, és az ODBC SQLEndTran függvénnyel véglegesíteni vagy visszahozni a tranzakciókat.