在 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 (SSMS) 中移除。 不建議使用 SQL Server Native Client (SQLNCLI 或 SQLNCLI11) 和舊版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB) 開發新的應用程式。 往後請改用新的 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server 或最新的 Microsoft ODBC Driver for SQL Server。 如需 SQL Server 資料庫引擎元件隨附的 SQLNCLI(版本 2012 到 2019),請參閱此 支援生命週期例外狀況

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)