Microsoft的分布式服务支持团队每天都会帮助客户排除一些最常见的分布式事务错误,这些错误是MSRPC(Microsoft远程过程调用)通信在网络中因某些安全\防火墙设置而失败的直接结果。在应用程序层(如SQL)上,这些是将被冒泡的常见错误消息。

  • 服务器:消息7391,级别16,状态1,行2无法执行操作,因为OLE DB提供程序“SQLOLEDB”无法启动分布式事务。OLE / DB提供程序返回消息:新事务无法在指定的事务协调器中登记。
  • 新事务无法在指定的事务协调器中登记(0x8004d00a)
  • 事务已被隐式或显式提交或中止(0x8004d00e)

如果在使用应用程序中的分布式事务时遇到上述错误消息之一,请随时使用DTCPING工具找出问题所在。本博客介绍了如何使用DTCPing工具缩小问题的根源以及如何解决问题。

分布式事务(特别是OleTx事务)使用MSRPC协议与另一台机器上的MSDTC进行通信。为确保两台计算机能够使用MSRPC协议相互通信,您可以在两台计算机上运行DTCPING工具,以测试正常的RPC通信是否正常工作。在讨论此工具引发的各种错误之前,了解正确运行工具的正确方法非常重要,这样我们才能从工具中获得正确的输出

  1. 只要有多个服务器参与事务,分布式事务就会显示在图像中。如果分布式事务中只涉及一个服务器,并且在运行分布式事务时仍然遇到一些错误,那么这不是正确的文章。确定参与分布式事务的正确服务器后,在两台计算机上同时启动DTCPING.EXE工具。在放置正确的服务器名称并单击PING按钮之前,DTCPING.EXE应在两台计算机上同时运行。
  2. 在DTCPING工具的远程服务器名称部分中,您应该只放置您尝试运行分布式事务的服务器的NETBIOS名称。在指定服务器的IP地址或服务器的FQDN之后执行的任何测试都是无效测试。您必须提供您尝试运行分布式事务的服务器的NETBIOS名称,因为MSDTC使用MSRPC作为基础机制,MSRPC仅适用于NETBIOS名称解析。
  3. 在群集中 - 在群集计算机上,您应始终放置MSDTC资源所依赖的NETWORK RESOURCE的名称在“远程服务器名称”字段中。要找到要在DTCPing中使用的正确NETWORK NAME,请打开群集管理器并转到存在MSDTC资源的组。该组应具有DTC资源所依赖的一个网络名称资源。要查找网络名称,只需转到网络名称资源的属性,然后转到“参数”选项卡。您在其中看到的名称是此MSDTC资源的网络名称。让我们通过一个例子来理解这一点: - 假设您有一个2节点集群,其中两个节点的NETBIOS名称为DBSERVER01和DBSERVER02,并且您尝试从第三个服务器APPSERVER运行分布式事务。然后以正确的方式运行DTCPing,您应该在APPSERVER和集群的活动节点上启动DTCPING.EXE。(通过主动节点,我指的是DTC资源在线的节点。然后从群集管理器转到分布式事务处理协调器资源所在的NETWORK NAME资源的属性,并转到PARAMETERS选项卡。请注意此网络名称。确定正确的网络名称后,在群集的活动节点和APPSERVER上以及APPSERVER上的DTCPing窗口内启动DTCPING,在(远程服务器名称)字段中输入群集MSDTC资源的网络名称,然后点击PING。
  4. 在测试时,应始终只在服务器上运行一个DTCPING.EXE实例,对于后续测试,应始终关闭DTCPING工具并再次打开它。

确保您已正确阅读上述要点后,您应该只运行DTCPING工具并在远程服务器名称中输入正确的服务器名称,然后单击PING。如果一切正常,您应该看到该工具返回以下消息。(此处DTCPing从具有NETBIOS名称SOURCE的机器运行到具有NETBIOS名称DESTINATION的机器)

++++++++++++++++++++++++++++++++++++++++++++++
DTCping 1.9 Report for SOURCE
++++++++++++++++++++++++++++++++++++++++++++++
RPC server is ready
++++++++++++Validating Remote Computer Name++++++++++++
11-21, 04:31:01.455-->Start DTC connection test
Name Resolution:
DESTINATION-->65.52.22.254-->DESTINATION.contoso.com
11-21, 04:31:01.470-->Start RPC test (SOURCE-->DESTINATION)
RPC test is successful
Partner's CID:084B708C-F0C5-4E65-95F2-8E2DEF73FFF3
++++++++++++RPC test completed+++++++++++++++
++++++++++++Start DTC Binding Test +++++++++++++
Trying Bind to DESTINATION
11-21, 04:31:01.830-->SOURCE Initiating DTC Binding Test....
Test Guid:B5544E05-D64B-40AC-B283-71947914DED3
Received reverse bind call from DESTINATION
Network Name: SOURCE
Source  Port: 1116
Hosting Machine:SOURCE
Binding success: SOURCE-->DESTINATION
++++++++++++DTC Binding Test END+++++++++++++

如果看到上述消息,请转到第二个服务器并将源服务器的名称放在“远程服务器名称”字段中,然后单击PING并确保看到与上面相同的结果。如果两个服务器在运行DTCPING工具后返回成功但分布式事务仍然无法正常工作,那么您应该看到本文的第二部分讨论了当DTCPING在两台机器之间正常工作时如何解决分布式事务问题。

如果该工具的结果不成功,请确定您获得的错误,并按照以下部分中提到的步骤来修复错误消息。

  • getHostByname失败
  • Rpc服务器不可用
  • 远程过程调用失败
  • 终结点映射器不再有端点
  • 访问被拒绝
  • 没有足够的资源可用于完成此操作

错误消息1 - gethostbyname失败

DTCPing log file: C:\Documents and Settings\username\Desktop\DTC_PING\TURTLES8618
RPC server is ready
Please Start Partner DTCPing before pinging
++++++++++++Validating Remote Computer Name++++++++++++
Please refer to following log file for details: C:\Documents and Settings\username\Desktop\DTC_PING\TURTLES861840.log
Error(0xB7) at nameping.cpp @43
-->gethostbyname failure -->183(Cannot create a file when that file already exists.)
Can not resolve abc Invalid remote host name:abc

我认为这个错误不仅仅是自我解释。如果您在远程服务器名称中添加的主机名不是有效的主机名,您将获得此名称。通过运行ping命令,确保您在DTCPING工具中指定的远程服务器名称解析为有效的IP地址。如果该主机名未解析为任何IP地址,则可以尝试在hosts文件中添加主机名,然后再次尝试运行该工具。

错误消息2 - RPC服务器不可用

DTCping log file: C:\Documents and Settings\username\Desktop\DTC_PING\TURTLES8618
RPC server is ready Please Start Partner DTCping before pinging
++++++++++++Validating Remote Computer Name++++++++++++
Please refer to following log file for details: C:\Documents and Settings\username\Desktop\DTC_PING\TURTLES861896.log
Invoking RPC method on turtle86
Problem:fail to invoke remote RPC method Error(0x6BA) at dtcping.cpp @303
-->RPC pinging exception -->1722(The RPC server is unavailable.)
RPC test failed

这表示防火墙上的端口135或DCOM端口范围中的一个端口被阻止。为了进一步确认这一点,我们说你从SERVER01运行DTCPING到SERVER02,你得到了这个错误。现在打开SERVER01上的命令提示符并键入telnet SERVER02 135(在运行此测试之前,只需确保在服务器上启动Telnet服务。在Windows 2008 Server上,默认情况下不安装telnet服务,您必须安装它通过在服务器上配置角色服务。如果您看到一个光标闪烁的空白窗口,这足以告诉端口未被阻止,但如果telnet命令失败并出现错误,您可以轻松推断端口135被阻止,您应该检查您的网络团队使端口135在防火墙上双向打开。如果telnet到端口135工作正常,那么在SERVER02上执行NETSTAT -anob并找出DTCPING.EXE正在侦听的端口。然后返回SERVER01并执行telnet SERVER02 <PORT_NUMBER>。如果您收到此错误,则此测试必须失败。MSDTC使用MSRPC协议与远程计算机上的MSDTC通信。由于MSRPC协议正常工作,MSDTC可以自由使用1024-65535范围内的一个动态端口。如果MSDTC可以使用此范围内的任何一个端口,那么我应该如何配置我的防火墙?我是否应该领先并在防火墙上打开整个范围?那么什么是防火墙?答案是 - 你不要'请再次注意 - 此范围会影响所有使用MSRPC的程序,而不仅仅是MSDTC。您可以在注册表或DCOMCNFG UI中配置此范围。要指定此范围,请向下滚动到“限制DCOM端口范围”部分,该部分讨论如何限制DCOM使用特定端口范围。

错误消息3 - 远程过程调用失败

RPC server is ready
++++++++++++Validating Remote Computer Name++++++++++++
Problem:fail to invoke remote RPC method
Error(0x6BE) at dtcping.cpp @303
-->RPC pinging exception -->1726(The remote procedure call failed.)
RPC test failed

此错误是防火墙断开两台计算机之间TCP连接的结果。您必须与防火墙管理员联系,以帮助您找出防火墙关闭两台计算机之间TCP连接的原因。要解决此错误,您可以在两台计算机上安装网络监视器工具并重新运行测试,您应该看到尝试关闭连接的网络设备发送的TCP RESET数据包。

错误信息4 - 终结点映射器不再有端点

DTCping log file: C:\Documents and Settings\username\Desktop\DTC_PING\TURTLES8626
RPC server is ready Please Start Partner DTCping before pinging
++++++++++++Validating Remote Computer Name++++++++++++
Please refer to following log file for details: C:\Documents and Settings\username\Desktop\DTC_PING\TURTLES86268.log
Invoking RPC method on turtle86
Problem:fail to invoke remote RPC method Error(0x6D9) at dtcping.cpp @303
-->RPC pinging exception -->1753(There are no more endpoints available from the endpoint mapper.)
RPC test failed

此错误使得RPC似乎耗尽了DCOM端口,但您不应立即将此错误推断为端口耗尽。如果您能够在两台计算机上运行DTCPING.EXE并在启动EXE期间,该工具不会抱怨端口出错,那么此错误只是防火墙阻塞端口和故障排除的结果错误应该与故障排除“RPC服务器不可用”错误完全相同,如上所述。我为什么这么说?假设我们的DCOM端口耗尽(如果你指定了一个端口范围并且范围太小,小于30,则通常会发生这种情况),那么你应该在启动DTCPING.EXE时看到错误。因为那是DTCPing的时候。exe将联系End Point Mapper服务(RpcSS)并要求动态端口。如果DTCPing.exe启动就好了,那就意味着它获得了分配给它的正确端口,因此不存在Endpoint Mapper耗尽DCOM端口的问题。

错误消息5 - 错误消息5 - 访问被拒绝

Invoking RPC method on TURTLE86
Problem:fail to invoke remote RPC method
Error(0x5) at dtcping.cpp @303
-->RPC pinging exception
-->5(Access is denied.)

仅当目标计算机是Windows XP计算机或Windows VISTA计算机时才会出现此错误。这是RPC层中的附加安全性,它在客户端操作系统上配置。有关此安全方面的更多详细信息,请参见Technet上的文章“RPC Interface Restriction”

  • RPC接口限制http://technet.microsoft.com/en-us/library/cc781010.aspx

要解决此错误,只需按照以下步骤配置注册表项并重新启动计算机。

  1. 单击“开始”,单击“运行”,键入Regedit,然后单击“确定”。
  2. 找到并单击以下注册表项:  HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows NT
  3. 在“编辑”菜单上,指向“新建”,然后单击“密钥”。
  4. 注意如果RPC注册表项已存在,请转到步骤5。
  5. 键入RPC,然后按ENTER键。单击RPC。
  6. 在“编辑”菜单上,指向“新建”,然后单击“DWORD值”。
  7. 键入RestrictRemoteClients,然后按ENTER键。
  8. 单击RestrictRemoteClients。
  9. 在“编辑”菜单上,单击“修改”。
  10. 在“数值数据”框中,键入0,然后单击“确定”。
  11. 注意要启用RestrictRemoteClients设置,请键入1。
  12. 关闭注册表编辑器并重新启动计算机

错误消息6 - 没有足够的资源可用于完成此操作

DTCping log file: Z:\Tools\DTC_PING\TURTLE865072.log
Error(0x6B9) at rpcUtil.cpp @133
-->I_RpcServerAllocateIpPort
-->1721(Not enough resources are available to complete this operation.)
Error(0x6B9) at rpcUtil.cpp @54
-->1721(Not enough resources are available to complete this operation.)

启动DTCPING窗口后,您将立即收到此错误消息。此错误消息表示RPC正在耗尽计算机上的端口,因为您定义的DCOM端口范围太小或者有很多其他RPC应用程序正在使用DCOM端口(通常DCOM或RPC程序只使用一个DCOM端口,但应用程序可以通过直接调用RPC API来获取多个DCOM端口。要修复此错误消息,请按照以下步骤增加端口范围。

限制DCOM港口范围

1.转到开始 - >运行。输入DCOMCNFG。
2.转到“组件服务”下“计算机”文件夹下的“我的电脑”节点的属性。
3.在“我的电脑属性”下,在“默认协议”选项卡下查看。
4.在那里确保选择了面向连接的TCP / IP,然后单击属性。
你会看到这样一个窗口

如果您没有看到上面的范围,并且窗口看起来与上面的那个完全相同,那么这意味着计算机上未配置DCOM端口范围。
您可以在上面的窗口中单击“添加”并键入范围(假设为5000-5100)并说出“确定”。确保它看起来像这样。(应为Internet范围选择单选按钮)

您必须在两台计算机上配置此范围,然后必须重新启动两个服务器才能使此范围生效。完成后,您必须双向打开防火墙上的相同范围

假设您已经打开了足够的端口但仍然收到此错误消息。在这种情况下,您应该在返回此错误消息的计算机上运行NETSTAT -anob并尝试找出正在使用所有端口的程序。您应该查找在RPC端口范围中定义的端口,并查找正在侦听该端口范围的所有EXE。

我们希望本文能够为您提供有关如何使用DTCPing工具解决MSDTC问题的充分信息,我们希望您能够进一步解决和诊断与MSDTC相关的问题。如果您仍然需要我们的帮助来解决上述博客中提到的任何DTCPING错误,请随时从机器(运行DTCPING)收集DTCPING日志文件并打开Microsoft支持事件。一旦我们有正确的数据可供查看,我们(MSDTC支持团队)将非常乐意为您提供及时解决问题的方法。

如果您有兴趣深入了解DCOM和防火墙概念,请随时浏览以下有关DCOM问题的文章。

  • DTCPING.exe下载http://download.microsoft.com/download/d/0/0/d00c8f6b-135d-4441-a97b-9de16a1935c1/dtcping.exe
  • 将分布式COM与防火墙一起使用http://msdn.microsoft.com/en-us/library/ms809327.aspx
  • 配置Microsoft分布式事务处理协调器(DTC)以通过防火墙工作http://support.microsoft.com/kb/250367/en-us
  • 群集环境中的MSDTC客户端必须具有的名称和IP地址的说明http://support.microsoft.com/kb/311846/en-us
  • 解决MSDTC问题http://msdn.microsoft.com/en-us/library/aa561924.aspx

使用DTCPing工具解决MSDTC问题(新事务无法在指定的事务协调器中登记)相关推荐

  1. sp01事务码_修复了Server 2003 SP2上的“新事务无法在指定事务协调器中登记”

    sp01事务码 If you are running a web application using the original ASP technology on Windows Server 200 ...

  2. 新事务不能登记到指定的事务处理器中异常的处理----MSDTC的正确配置

    在做BizTalk项目的时候,BizTalk Server和Sql Server不在同一台计算机上,使用SQL适配器发送数据提示"新事务不能登记到指定的事务处理器中"的错误,同样的 ...

  3. sql server分布式事务解决方案[新事务不能登记到指定的事务处理器中错误]

    < DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> 适用环境 操作系统:wi ...

  4. SqlServer Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC)

    SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC) 原文:SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MS ...

  5. 模型动态测试工具 TPT 18更多新特性——HiL测试、需求管理

    文章目录 通过ASAM XiL 在TPT中实现HiL测试 通过基线将需求从codebeamer导入TPT 通过ASAM XiL 在TPT中实现HiL测试 在汽车行业,大量的测试是在HiL阶段完成的,因 ...

  6. 电脑关闭疑难解答_如何使用Office 365的疑难解答工具解决常见问题

    电脑关闭疑难解答 If you're experiencing trouble with your Office 365 installation or issues with specific Of ...

  7. 如何在 Windows 恢复环境中使用 Bootrec.exe 工具解决和修复 Windows Vista 中的启动问题

    简介 <script type="text/javascript">loadTOCNode(1, 'summary');</script> 可以在 Wind ...

  8. 解决MSDTC 53258故障

    一直被这个问题困扰,无意之中在GOXIA BLOG看到了解决办法,摘抄一下. 解决MSDTC 53258故障 做了将GC提升到DC的试验,基本上算顺利,可是发现日志中存在几个错误日志: 1.MSDTC ...

  9. 无法访问你试图使用的功能所在的网络位置_[steam实用工具]解决无法访问商店/社区/好友列表的问题...

    [steam实用工具]解决无法访问商店/社区/好友列表的问题 在我们使用steam的过程中,由于某些原因,在访问商店/社区/好友列表时会被受到限制.针对这种情况,国内的大神些开发出了以下工具来解决我们 ...

最新文章

  1. PyTorch 自动微分示例
  2. ceph-deploy rpm包的制作
  3. jdbc对mysql进行增删改查操作(Statement)
  4. 数据库:MySQL和MariaDB的JDBC连接
  5. DP+BIT(优化复杂度) UESTC 1217 The Battle of Chibi
  6. Qt 多界面来回切换的问题以及Qt界面关闭与销毁
  7. GitHub新神器,宇宙第一编辑器--VS Code!危
  8. java replace三个参数_javascript replace()第二个参数为函数时的参数用法
  9. 聚类分析与SPSS实现——《社会统计分析方法》
  10. windows 7 专业版 64位 无法安装.Net 4.7版本解决方案
  11. 一个简单有趣的爬虫-----爬取百度翻译功能
  12. 2019初创企业投融资服务平台都有哪些?
  13. 数据结构 | 有关树和二叉树的详解【内附考点精析】
  14. RK3588S Android12 旋转系统图像
  15. DeFi热潮下的安全隐患:流动性危机恐将造成连锁反应 | 非正式会谈
  16. c2c网站开店的流程图_C2C网店策划书
  17. lebel只想前面有星号,但是不想校验
  18. 点云数据处理合集(三)软件、开源库、数据库
  19. 易语言打印九九乘法表
  20. [转]Go 的垃圾回收机制在实践中有哪些需要注意的地方?

热门文章

  1. python猫眼电影分析_抓取猫眼电影
  2. 银行计算机招聘题库,2020山西银行招聘考试题库:计算机模拟试题(五)
  3. Axure RP9 3675(软件+汉化包+Licenses)
  4. 2023年深圳/东莞/惠州CPDA数据分析师认证报名入口
  5. SAST + SCA: 结合使用安全升级
  6. 深度学习在药物发现领域的兴起
  7. 什么是编程语言C语言,什么是oc语言,oc语言是c语言吗?
  8. 智慧高校共享单车管理系统
  9. mysql字段值拼接字符串
  10. win11搭建Ruoyi框架部署流程(有引用内容)