使用 Microsoft 分布式事务处理协调器 (ODBC)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

使用 MS DTC 更新两个或多个 SQL Server 实例

  1. 使用 MS DTC OLE DtcGetTransactionManager 函数连接到 MS DTC。 有关 MS DTC 的信息,请参阅 Microsoft 分布式事务处理协调器。

  2. 针对要建立的每个 SQL Server 连接调用 SQL 驱动程序连接一次。

  3. 调用 MS DTC OLE ITransactionDispenser::BeginTransaction 函数以开始 MS DTC 事务,并获得代表事务的事务对象。

  4. 对于要在 MS DTC 事务中登记的每个 ODBC 连接调用一次或多次 SQLSetConnectAttrSQLSetConnectAttr 第二个参数必须是 SQL_ATTR_ENLIST_IN_DTC,并且第三个参数必须是在步骤 3 中获得的 Transaction 对象。

  5. 对于要更新的每个 SQL Server 调用一次 SQLExecDirect

  6. 调用 MS DTC OLE ITransaction::Commit 函数以提交 MS DTC 事务。 Transaction 对象不再有效。

若要执行一系列 MS DTC 事务,请重复步骤 3 到 6。

若要释放对 Transaction 对象的引用,请调用 MS DTC OLE ITransaction::Return 函数。

若要将 ODBC 连接用于 MS DTC 事务,然后将该连接用于本地 SQL Server 事务,请调用 SQLSetConnectAttr(带有 SQL_DTC_DONE)。

注意

还可以对每个 SQL Server 轮流调用 SQLSetConnectAttrSQLExecDirect,而不是按照前面步骤 4 和 5 中的建议调用它们。

另请参阅

执行事务 (ODBC)