深入浅出:Microsoft分布式事务处理协调器

日期: 2011-01-11 作者:Denny Cherry翻译:沈宏 来源:TechTarget中国 英文

Microsoft分布式事务处理协调器(MSDTC),是Microsoft SQL Server在Windows操作系统中的一个重要组成部分。它可以让一台服务器上的某个事务访问多台服务器上的对象。使用BEGIN DISTRIBUTED TRANSACTION语句启用MSDTC。使用.NET语言可以让一个单一事务运行在多个SQL Server实例或是来自不同厂商的多个数据库中。

无论事务是如何启动的,它可在同一个时间里在所有服务器上被提交或回滚。   分布式事务处理协调器是由数据库引擎使用的操作系统功能以确保多台服务器上的事务一致性。该功能被默认安装,且只配置成本地访问。MSDTC必须被配置为远程……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

Microsoft分布式事务处理协调器(MSDTC),是Microsoft SQL Server在Windows操作系统中的一个重要组成部分。它可以让一台服务器上的某个事务访问多台服务器上的对象。使用BEGIN DISTRIBUTED TRANSACTION语句启用MSDTC。使用.NET语言可以让一个单一事务运行在多个SQL Server实例或是来自不同厂商的多个数据库中。无论事务是如何启动的,它可在同一个时间里在所有服务器上被提交或回滚。

  分布式事务处理协调器是由数据库引擎使用的操作系统功能以确保多台服务器上的事务一致性。该功能被默认安装,且只配置成本地访问。MSDTC必须被配置为远程访问,以便两个在单独服务器上的实例可以互相访问。如果使用MSDTC连接同一台服务器上的两个实例,远程配置就没有必要了。在群集环境中安装MSDTC,它会自动进行群集,使得只有一个MSDTC实例被使用。

  通过SQL Server排除MSDTC故障问题是相当棘手的;你不能像对SQL Server实例那样直接对MSDTC发出命令。微软提供了两个诊断工具用于确保两个MSDTC实例可以相互访问。第一个基础诊断工具称为DTCPing。第二个工具称为WinRM或“Windows Remote Management”。对MSDTC问题进行故障排除时,先启动DTCPing工具。一旦该工具开始工作,就可以使用WinRM进行测试。

  应用程序可以像连接数据库引擎一样手动启动分布式事务,也可以在使用链接服务器或一个开放的查询命令时通过Transact-SQL或T-SQL进行启动。这是最常见的场景。如果分布式事务需要从T-SQL中手动启动,可以使用BEGIN DISTRIBUTED TRANSACTION命令。如果MSDTC在两台机器上被正确配置,SQL Server将启动分布式事务并维持该事务直到它被提交或回滚。当与远程实例协同工作时,非分布式事务可以被数据库引擎根据需要升级为分布式事务。当数据在远程实例上被更新时(比如向远程服务器插入或更新数据),这个动作就会发生。这种事务升级不仅包括使用BEGIN TRANSACTION命令显式启动的本地事务,还包括自动启动的隐式事务。

  监控MSDTC

  您可以通过组件服务MMC(Microsoft管理控制台)管理单元监视MSDTC。在打开管理单元后,通过Console Root > Component Services > Computers > My Computer > Distributed Transaction Coordinator > Transaction Statistics路径进行下钻。图1显示了当前正在运行的事务数,已提交或失败的事务数和总的事务数。

图1:组件服务MMC管理单元中显示当前和总计事务连接数

  如果需要展现比图1所示柱状图更多的统计信息,可以从左侧菜单中选择“事务列表”。它列出了所有的通过MSDTC处理的当前正在运行的事务,如图2所示。

图2:组件服务MMC管理单元中显示当前正在运行的事务列表

  MSDTC如何进行通信

  当配置MSDTC时,重要的是要知道MSDTC服务是如何在计算机之间进行通信的,特别是当有网络防火墙时。MSDTC使用远程过程调用或RPC进行计算机之间的通信。RPC通常使用大于1024的网络端口进行通信。但是,你可以限制RPC使用的通过防火墙进行通信的端口数量。可以配置RPC允许通过防火墙的端口数量是20个。如果有很多并发的MSDTC事务或是群集服务、网络文件共享服务使用RPC协议,则端口数量需要增加,因为所有的RPC通信必须通过有限的端口数量进行处理。不建议限制RPC可以使用的TCP端口,除非有必要,比方说,通过网络防火墙的RPC通信。

  结论

  不是每个数据库服务器都需要配置为网络访问方式的MSDTC。然而当有需要时,你只在需要相互访问的机器上配置即可。相反,MSDTC应该在所有服务器上进行配置,以使这些机器可以有效互通。

翻译

沈宏
沈宏

相关推荐