共用方式為


在 ODBC 中執行交易

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

重要

SQL Server Native Client (SNAC) 未隨附於:

  • SQL Server 2022 (16.x) 和更新版本
  • SQL Server Management Studio 19 和更新版本

不建議使用 SQL Server Native Client (SQLNCLI 或 SQLNCLI11) 和舊版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB) 開發新的應用程式。

針對新專案,請使用下列其中一個驅動程式:

針對 SQL Server 資料庫引擎 (2012 到 2019 版) 的隨附元件 SQLNCLI,請參閱支援生命週期例外狀況

ODBC 中的交易會在連接層級進行管理。 當應用程式完成交易時,它會認可或回復透過該連線上所有語句句柄完成的所有工作。 若要認可或回復交易,應用程式應該呼叫 SQLEndTran ,而不是提交 COMMIT 或 ROLLBACK 語句。

應用程式會呼叫 SQLSetConnectAttr ,以在管理交易的兩種 ODBC 模式之間切換:

  • 自動認可模式

    每個語句都會在成功完成時自動認可。 當您以自動認可模式執行時,不需要其他交易管理功能。

  • 手動認可模式

    所有已執行的語句都會包含在相同的交易中,直到呼叫SQLEndTran 來特別停止為止。

自動認可模式是 ODBC 的預設交易模式。 建立連線時,它會處於自動認可模式,直到 呼叫 SQLSetConnectAttr 以將自動認可模式設定為關閉,以切換至手動認可模式。 當應用程式關閉自動認可時,傳送至資料庫的下一個語句會啟動交易。 然後,交易會維持有效狀態,直到應用程式使用SQL_COMMIT或SQL_ROLLBACK選項呼叫 SQLEndTran 為止。 在 SQLEndTran 啟動下一筆交易之後,傳送至資料庫的命令。

如果應用程式從手動認可切換到自動認可模式,驅動程式會認可目前在連線上開啟的任何交易。

ODBC 應用程式不應該使用 Transact-SQL 交易語句,例如 BEGIN TRANSACTION、COMMIT TRANSACTION 或 ROLLBACK TRANSACTION,因為這可能會導致驅動程式中的不確定行為。 ODBC 應用程式應該以自動認可模式執行,而不使用任何交易管理功能或語句,或以手動認可模式執行,並使用 ODBC SQLEndTran 函式來認可或回復交易。

另請參閱

執行交易 (ODBC)