分布式事务使用方法

简介: 使用 OLE DB、开放式数据库连接 (ODBC)、ActiveX 数据对象 (ADO) 或 DB 库编写的应用程序可以使用 Transact-SQL 分布式事务,方法是发出 Transact-SQL 语句来启动和停止 Transact-SQL 分布式事务。

使用 OLE DB、开放式数据库连接 (ODBC)、ActiveX 数据对象 (ADO) 或 DB 库编写的应用程序可以使用 Transact-SQL 分布式事务,方法是发出 Transact-SQL 语句来启动和停止 Transact-SQL 分布式事务。OLE DB 和 ODBC 还包含在应用程序编程接口 (API) 级别对管理分布式事务的支持。OLE DB 应用程序和 ODBC 应用程序可以使用这些 API 函数管理包括其他组件对象模型 (COM) 资源管理器(支持 Microsoft 分布式事务处理协调器 [MS DTC] 事务但不支持 SQL Server 数据库引擎)的分布式事务。它们也可以使用 API 函数获取对包括多台运行数据库引擎实例的计算机的分布式事务边界的更多控制。

ODBC 分布式事务

通过将连接属性 SQL_ATTR_AUTOCOMMIT 设置为 SQL_AUTOCOMMIT_OFF,然后调用 ODBC SQLEndTran 函数提交或回滚每个事务,可以控制 ODBC API 级别的本地事务。请勿使用这些函数管理 ODBC 应用程序中的分布式事务。而应该使用 MS DTC COM 方法:

  • 调用 DtcGetTransactionManager 连接到 MS DTC。

  • 调用 ITransactionDispenser::BeginTransaction 启动分布式事务并获取事务对象。

  • 对每个参与分布式事务的 ODBC 连接,调用 ODBC 函数 SQLSetConnectAttr,其中 fOption 设置为 SQL_COPT_SS_ENLIST_IN_DTC,vParam 保存通过 ITransactionDispenser::BeginTransaction 获得的事务对象的地址。

  • 当事务完成时,对于通过 ITransactionDispenser::BeginTransaction 获得的事务对象,不要调用 ODBC SQLEndTran 函数,而应调用 ITransaction::Commit 方法或 ITransaction::Rollback 方法。

OLE DB 分布式事务

控制 OLE DB 中的分布式事务的方法与控制本地事务的方法相似。若要控制本地事务,则 OLE DB 的使用者应该:

  • 使用 ITransactionLocal::StartTransaction 方法启动本地事务,并获得事务对象。

  • 对于通过 ITransactionLocal::StartTransaction 获得的事务对象,调用 ITransaction::Commit 方法或 ITransaction::Rollback 方法。

若要控制分布式事务,使用者应该:

  • 调用 DtcGetTransactionManager 连接到 MS DTC。

  • 调用 ITransactionDispenser::BeginTransaction 启动分布式事务,并获取事务对象。

  • 对每个参与分布式事务的连接,调用分布式事务对象的 ITransactionJoin 接口。

  • 对分布式事务对象调用 ITransaction::Commit 方法或 ITransaction::Rollback 方法,完成该事务。
目录
相关文章
|
23天前
|
监控 API 数据库
Seata常见问题之Seata AT的设计不支持使用临时表如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
|
26天前
|
存储 关系型数据库 MySQL
Seata常见问题之程序读的nocas的配置如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
53 0
|
10月前
|
存储 JSON 数据可视化
Seata Saga 模式快速入门和最佳实践
Seata Saga 模式快速入门和最佳实践
6325 11
|
11月前
|
SQL JSON 搜索推荐
SEATA相关概念以及实现原理
SEATA相关概念以及实现原理
90 0
|
存储 SQL 关系型数据库
事务简介
事务简介
70 0
|
SQL 关系型数据库 MySQL
如何使用事务
如何使用事务
如何使用事务
|
JSON Java 数据格式
原理篇:Seata TCC模式中BusinessActionContext是如何传递的
原理篇:Seata TCC模式中BusinessActionContext是如何传递的
880 0
|
SQL Cloud Native Java
分布式事务Seata源码解析八:本地事务执行流程(AT模式下)
分布式事务Seata源码解析八:本地事务执行流程(AT模式下)
610 0
分布式事务Seata源码解析八:本地事务执行流程(AT模式下)
|
缓存 自然语言处理 Dubbo
深度剖析 Seata TCC 模式【图解 + 源码分析】
Seata 目前支持 AT 模式、XA 模式、TCC 模式和 SAGA 模式,之前文章更多谈及的是非侵入式的 AT 模式,今天带大家认识一下同样是二阶段提交的 TCC 模式。
689 0
深度剖析 Seata TCC 模式【图解 + 源码分析】