关于分布式事务

分布式事务
分布式事务跨越两个或多个称为资源管理器的服务器。被称为事务管理器的服务器组件必须在资源管理器之间协调事务管理。如果分布式事务由 Microsoft 分布式事务处理协调器 (MS DTC))这类事务管理器或其它支持 X/Open XA 分布式事务处理规范的事务管理器进行协调,则 Microsoft® SQL Server™ 可以作为资源管理器运行。有关更多信息,请参见 Microsoft 分布式事务处理协调器文档。

实际上跨越两个或多个数据库的单个 SQL Server 中的事务就是分布式事务。但是,SQL Server 对分布式事务进行内部管理;对于用户而言,其操作就像本地事务一样。

对于应用程序,管理分布式事务很像管理本地事务。事务结束时,应用程序请求提交或回滚事务。不同的是,分布式提交必须由事务管理器管理,以尽量避免出现因网络故障而导致一个事务由某些资源管理器成功提交,但由另一些资源管理器回滚的情况。通过分两个阶段(准备阶段和提交阶段)管理提交进程可避免这种情况,这称为两阶段提交 (2PC)。

准备阶段

当事务管理器收到提交请求时,它给该事务所涉及的所有资源管理器发送一个准备命令。然后,每个资源管理器将尽力使该事务持久,并且所有保存该事务日志映象的缓冲区将被刷新到磁盘中。当每个资源管理器完成准备阶段时,它会向事务管理器返回准备成功或准备失败的消息。

提交阶段

如果事务管理器收到所有资源管理器发来的准备成功消息,它将给每个资源管理器发送提交命令。然后资源管理器就可以完成提交。如果所有资源管理器都报告提交成功,那么事务管理器则向应用程序发送一个成功提示。如果有资源管理器报告准备失败,那么事务管理器将给每个资源管理器发送一个回滚命令,并向应用程序表示提交失败。

SQL Server 应用程序可以通过 Transact-SQL 或数据库 API 管理分布式事务。

你可能感兴趣的:(sql,应用服务器,SQL Server,Microsoft,网络应用)