分布式事务使用方法

简介: 使用 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 方法,完成该事务。
目录
相关文章
|
消息中间件 存储 负载均衡
ActiveMQ高可用集群部署方案
ActiveMQ是分布式系统中重要的组件,在生产环境中如何保证让ActiveMQ能够持续工作,同时还要使消息中间件服务保持可靠性和高效的处理性能。
7066 0
ActiveMQ高可用集群部署方案
|
10月前
|
算法
MATLAB在风险管理中的应用:从VaR计算到压力测试
本文介绍如何使用MATLAB进行风险管理,涵盖风险度量(如VaR)、压力测试和风险分解。通过历史模拟法、参数法和蒙特卡洛模拟法计算VaR,评估投资组合在极端市场条件下的表现,并通过边际VaR和成分VaR识别风险来源。结合具体案例和代码实现,帮助读者掌握MATLAB在风险管理中的应用,确保投资组合的稳健性。
|
人工智能 算法 C++
C++在游戏开发中的应用与挑战
C++在游戏开发中扮演关键角色,常用于引擎开发、游戏逻辑与算法实现,以及跨平台和网络游戏开发。尽管面临学习曲线陡峭、内存管理复杂、跨平台兼容性及与其他技术集成的挑战,但通过学习和掌握现代C++特性,开发者能创造高效优质的游戏。
|
安全 虚拟化
【专栏】在数字化时代,成功实施网络项目至关重要,如何写一个优质高效的网络项目实施方案?这篇文章值得收藏!
【4月更文挑战第28天】在数字化时代,成功实施网络项目至关重要。本文从前期准备(明确目标、了解背景、组建团队)、方案内容(项目概述、技术方案、实施计划、风险评估、预算、验收标准)和注意事项(简洁明了、数据准确性、灵活性、沟通协调)三个方面解析如何撰写优质高效的网络项目实施方案。通过具体案例展示实施步骤,强调方案应具备的特点和要素,以确保项目顺利进行并达成目标。
719 0
|
前端开发 rax 网络协议
x64汇编语言与逆向工程基础指南(一)
x64汇编语言与逆向工程基础指南(一)
1023 0
|
API Windows
逆向学习COM篇:通过注册表管理COM组件
逆向学习COM篇:通过注册表管理COM组件
363 0
|
SQL 关系型数据库 Java
分库分表:中间件方案对比
分库分表:中间件方案对比
3413 80
分库分表:中间件方案对比
|
SQL 监控 Java
Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件!
Mycat是什么 Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件! 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替...
3149 95
|
SQL 存储 监控
NineData|如何快速完成MySQL数据的差异对比?
NineData 是一款功能强大的数据库对比工具,能够帮助企业追踪数据库的变化、发现问题并快速修复。相比其他工具,NineData 具有以下优势:即开即用、全面的数据源支持、完善的对比功能、快速高效、可视化界面、一键差异修复、免费使用、安全可靠。使用 NineData,您可以快速配置对比任务、查看对比结果、修复不一致内容、验证修复结果,并查看任务日志和监控指标。让数据库对比变得更简单、高效、安全。
3340 0
|
搜索推荐 算法
B站被删除的视频,该如何找回来?
B站被删除的视频,该如何找回来?
11352 0