MS SQL Server:事务处理概念和 MS DTC 概述 (简述)
来自桌面和业务系统分部的白皮书
引言
编写应用程序是很难的。随着时间的推移,我们不断发掘允许建立大型应用程序的概念和技术。模块化,或者说将应用程序构建成独立的模块,使我们得以由简单的部分构建复杂的系统,并使软件得到重复使用。面向对象概念和 Microsoft® 组件对象模块 (COM) 可提供编写模块化应用程序的技术。
当某个应用程序构建为组件时,各个单独部分可共同驻留在单台计算机上,也可通过远程过程调用在网络上相互作用。因此,组件同时提供了模块化和自然分布。
将应用程序构建成独立的组件会产生组件的管理问题。单个程序失败后,将作为一个单位重新启动。但在使用模块化系统时,一个组件的失败不应当破坏其它组件。这就必须有隔离故障和限制故障传播的方法。事务提供了模块化执行方式,因此简化了故障处理,并使故障处理自动实现。它们同时为执行者和用户提供了简单的概念化执行框架。
用户认为事务是单个的要么发生或要么不发生的更改事件。执行者认为事务是一种允许他们编写能参与分布式计算的模块的编程形式。假定您要将资金从一个银行帐户转到另一个帐户。执行者和用户需要确保两个帐户都更改或都不更改。在分布式系统中很难完成这项工作 - 计算机可能失败,并且会丢失信息。事务提供了一种方法,能够将一组操作集合成具有原子性的执行单位。
原子性要么全有要么全无的属性并不新鲜:它在生活中随处可见。例如,如果输入一个合同,escrow(由第三者保存附带条件委付盖印的契约)官员将协调这项事务:escrow 官员会收集此合同每一方的签字。当 escrow 官员宣布所有人都已签字后,此合同就完成了。主持结婚典礼的牧师先问新娘和新郎“愿意此人成为您的配偶吗?” 如果他们都回答“愿意”,牧师就会宣布他们结婚。电影导演在某一场景会先问“布景准备好了吗?” 如果都回答已准备好,导演就会喊“开拍!” 在帆船上预备掉转航向的舵手会先问船员,“准备好转向了吗?” 如果都回答已准备好,舵手就会喊“转舵!”,改变船的方向。
这些情景说明了事务的基本原理:几个独立的实体必须达成一致。如果任何一方不同意,交易就会失败。一旦同意后,事务就会发生。Microsoft Distributed Transaction Coordinator (MS® DTC) 为 COM 结构的其它组件执行这项事务协调任务。
在 MS DTC 术语中,执行者被称为事务管理器。在执行事务保护资源的事务中,其参与者(如关系数据库)被称为资源管理器。
应用程序通过调用事务管理器的 BeginTransaction 方法开始事务。这样可创建一个代表事务的事务对象。然后应用程序会调用资源管理器来完成事务工作。
应用程序对每个资源管理器的第一次调用确定应用程序的当前事务。例如,如果应用程序在使用关系数据库,它会调用 ODBC 接口,此接口将事务对象与 ODBC 连接关联起来。在此之后,所有通过此连接的数据库调用都会代表该事务执行,直到该事务结束为止。
当某个资源管理器首先代表某个事务工作时,会通过调用事务管理器“登记”到该事务中。随着事务的发展,事务管理器会跟踪每个登记到该事务中的资源管理器。
通常,应用程序用 Commit 事务方法来完成事务。如果应用程序无法完成,则调用 Abort 事务方法,该方法可以撤消事务的操作。如果应用程序失败,MS DTC 就会放弃此事务。
当应用程序成功地完成事务的工作后,它会调用 MS DTC 来“提交”事务。然后 MS DTC 会仔细检查“两阶段” “提交协议”,使所有已登记的资源管理器都提交。两阶段提交协议可确保所有的资源管理器提交此事务,或全都放弃此事务。在第一阶段,MS DTC 询问每个资源管理器是否“准备”提交。如果所有参与者都回答“是”,那么在第二阶段 MS DTC 将向所有参与者广播提交信息。如果事务的任何部分失败,或资源管理器响应准备请求失败,或资源管理器响应“否”,那么 MS DTC 将通知所有资源管理器该事务已被放弃。
事务管理器是大多数数据库系统的关键部分。事务管理器还是某些操作系统的可选部分。Microsoft 相信事务对分布式应用至关重要 - 事务提供了模块化执行,从而使 COM 模块化编程更加完备。Microsoft 提供 Microsoft Windows® 95 和 Microsoft Windows NT® 操作系统的事务管理软件。
将事务概念与 COM 必需的创新相结合。传统的事务系统要求具有很高的安装和管理技巧。而集成 MS DTC 与 Microsoft 操作系统的难点是自动实现安装、管理和使用。许多概念和技术必须针对新的客户/服务器、面向对象和可视化管理环境重新创造。
在第一版中,MS DTC 使用了一个资源管理器:Microsoft SQL Server®。它还使用了几个事务处理监视器,包括 Encina®、Top End 和 TUXEDO®。MS DTC 实现 OLE 事务接口。所有 OLE 事务接口都是公用的,因此任何资源管理器都可以变成 OLE 事务资源管理器。将来,Microsoft 和其它软件公司将增加其它事务资源管理器,比如分布式对象系统、事务文件系统、事务队列系统及业务流程管理系统。
分享到:
相关推荐
导入Microsoft分布式事务处理协调器MSDTC,网上大部分教程都是服务器配置msdtc,但是发现两个服务器都配置之后还是不行,可参照此图片解决,已验证过,不好用找我,最低可以支持到sqlserver2005的数据库以及2008R2的...
私域电商行业:复盘Shopify,强生态领路DTC数字化
私域电商行业系列研究二:复盘Shopify,强生态领路DTC数字化(54页).pdf
由于未在 Windows 中完全配置 Microsoft 分布式事务处理协调器 (MS DTC),因此,应用程序可能无法在分布式事务中登记 SQL Server Express 资源。此问题会影响使用分布式事务的链接服务器、分布式查询以及远程存储...
DTC: Distributed Transaction Coordinator(分布式事务处理协调器),用于协调多个数据库、消息队列、文件系统等等资源管理器的事务,由于内部开发中并不使用这个功能,远程数据库服务器上也并不经常使用,因此建议...
私域电商行业:复盘shopify,强生态领路dtc数字化-54页.pdf.rar
在执行分布式事务时,在sql server 2005下收到如下错误:消息 7391,级别 16,状态 2,过程 xxxxx,第 16 行无法执行该操作,因为链接服务器 "xxxxx" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务。 在sql ...
纺织服装行业报告:FILA尝试异业跨界,耐克DTC转型削减代理商(2022)(20页).pdf
分类: SQL Server Windows server2003 + sql server2005 集群配置安装 一:环境 软硬件环境 虚拟3台windows server 2003主机。其中一台做域控DC,另外两台作为节点win1 win2. 域控DC网络设置: Hostname ...
商业贸易:从完美日记,看DTC模式如何打造彩妆“国货之光”.pdf
SQL Server数据库引擎是通过上面设置的服务器名或者ip地址访问链接服务器,DTC服务也是通过服务器名或者ip地址访问链接服务器,所以要保证数据库引擎和DTC都能通过服务器名或者ip地址访问到链接服务器。
这样可使 .NET 应用程序运行跨多个资源结合不同操作(例如将定单插入SQL Server 数据库、将消息写入 Microsoft 消息队列(MSMQ)队列,以及从 Oracle 数据库检索数据)的事务。 要实现COM+事务处理的类则必须继承...
DTC事务环境配置手册:DTC配置【注意:应用服务器和数据库服务器都要检查】,在应用服务器和数据库服务器的【管理工具】——【组件服务】中配置一下即可
.NET简谈事务、分布式事务处理 ,DTC应用
控制面板->管理工具->组件服务->计算机->我的电脑->本地DTC .Net示例: 添加引用System.Transactions using (TransactionScope scope = new TransactionScope()) { //对第一个数据库操作 /...
◇MS90C385B Pin to Pin替代:THC63LVD83D、DS90C385、DTC34LF85L ◇MS90C385B兼容MS90C385! MS90C385B/G 芯片能够将28bit 的TTL 数据转换成4通道的低压差分型号(1Port LVDS)。时钟通道经过锁相之后与数据通道...
20201120-开源证券-化妆品行业:从完美日记,看DTC模式如何打造彩妆“国货之光”.rar
SPACE VECTOR CONTROL OF DTC