以下的文章主要介绍的是SQL Server 分布式事务的概念,我们大家都知道SQL Server 数据库的分布式事务主要是涉及来自两个或者是多个源的资源的相关事务。Microsoft® SQL Server™ 2000 支持分布式事务。
使用户得以创建事务来更新多个 SQL Server 数据库和其它数据源。
分布式事务包括:
资源管理器
控制分布式事务所涉及的每个资源的软件称为资源管理器。SQL Server 分布式事务由各个资源管理器内的本地事务组成。每个资源管理器必须能够与分布式事务内的所有其它资源管理器相协调,以提交或回滚自己的本地事务。SQL Server 可以作为分布式事务内的资源管理器工作,并遵从用于分布式事务处理的 X/Open XA 规范。
事务管理器
提交或回滚分布式事务由称为事务管理器的软件组件控制。事务管理器与每个资源管理器相协调,确保一起提交或回滚所有组成分布式事务的本地事务。Microsoft 分布式事务处理协调器 (MS DTC) 服务如事务管理器一样工作。MS DTC 遵从用于分布式事务处理的 X/Open XA 规范。
两阶段提交 (2PC)
需要进行特殊的提交处理,以防止在管理跨越多个资源管理器的事务时出现问题。当刷新日志缓冲区使其可用时,提交大事务可能需要相对较长的时间。提交进程本身还可能遇到错误,需要强行回滚。如果事务管理器只是请求每个资源管理器提交,则可能从一些资源管理器返回成功状态,然后从某个资源管理器得到错误信息。这会导致冲突,因为所有SQL Server 分布式事务都应回滚,而部分事务已提交。两阶段提交通过将提交分成两相可以解决此问题:
准备
事务管理器给每个资源管理器发送一个准备提交的请求。然后,每个资源管理器执行完成提交进程所需的所有大量占用资源的操作,如刷新所有日志缓冲区。资源管理器只保留维护事务完整性所需的最少的锁,然后给事务管理器返回成功状态。
提交
如果所有资源管理对发给它们的准备请求返回成功状态,事务管理器将给每个资源管理器发送提交命令。然后,每个资源管理器快速将事务记录为已完成,并释放上次控制的资源。如果有任何资源管理器对准备请求返回错误信息,事务管理器将给每个资源管理器发送回滚命令。
有几种方法可以使应用程序在分布式事务内包括 SQL Server 2000:
如果应用程序有本地事务并且发出分布式查询,本地事务将升级到SQL Server 分布式事务。
发出 BEGIN DISTRIBUTED TRANSACTION 语句。
如果应用程序有本地事务并且将 REMOTE_PROC_TRANSACTIONS 选项设置为>
使用用于 SQL Server 的 OLE DB 提供程序或 SQL Server ODBC 驱动程序的应用程序,可以使用 OLE DB 方法或 ODBC 函数让 SQL Server 连接联接由应用程序启动的SQL Server 分布式事务。
【编辑推荐】