You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 10 Pro下MSDTC与SQL Server协同报错:RpcMgmtInqServerPrincName调用失败

MSDTC与SQL Server协同运行失败:Msg 8501错误排查

我正尝试在Windows 10 Pro系统上实现MSDTC与SQL Server的协同运行。已经启动了Distributed Transaction Coordinator服务,该服务使用Network Service账户,但在SQL Server中启动分布式事务时,出现以下错误:

Msg 8501, Level 16, State 3, Line 1 MSDTC on server 'DESKTOP-99PFPB8' is unavailable.

我按照官方说明启用了DTC连接管理器追踪,追踪日志如下:

05-11-2018 10:52:25:672 : [3d58.77ac] 0x00000000 [ TRACE_CM] [ TRACE_INFO] InitRpcSecurity (com\complus\dtc\dtc\cm\src\iomgrrpc.cpp@382): Calling RpcServerRegisterAuthInfo with NT Service\MSSQLSERVER as SPN 
05-11-2018 10:52:25:678 : [3d58.75c4] 0x800706d3 [ TRACE_CM] [ TRACE_ERROR] CRpcIOManagerClient::SetRpcSecurity (com\complus\dtc\dtc\cm\src\iomgrclt.cpp@569): [Remote:DESKTOP-99PFPB8 a2e530a1] Call to RpcMgmtInqServerPrincName failed. The partner does not support secure calls 
05-11-2018 10:52:25:681 : [3d58.75c4] 0x80070006 [ TRACE_CM] [ TRACE_ERROR] CRpcIOManagerClient::PokeWrapper (com\complus\dtc\dtc\cm\src\iomgrclt.cpp@1174): [Remote:DESKTOP-99PFPB8 a2e530a1] Exception raised in the rpc call C_PokeW 
05-11-2018 10:52:25:685 : [3d58.75c4] 0x80000171 [ TRACE_CM] [ TRACE_ERROR] CRpcIOManagerClient::Poke (com\complus\dtc\dtc\cm\src\iomgrclt.cpp@992): [Remote:DESKTOP-99PFPB8 a2e530a1] SecurePokeWrapper call failed 
05-11-2018 10:52:25:688 : [3d58.75c4] 0x00000000 [ TRACE_CM] [ TRACE_INFO] CRpcIOManagerClient::Poke (com\complus\dtc\dtc\cm\src\iomgrclt.cpp@1035): Secure Poke failed for LRPC and falling back to unsecure mode... Setting RPC security again! 
05-11-2018 10:52:25:692 : [3d58.75c4] 0x80070006 [ TRACE_CM] [ TRACE_ERROR] CRpcIOManagerClient::PokeWrapper (com\complus\dtc\dtc\cm\src\iomgrclt.cpp@1174): [Remote:DESKTOP-99PFPB8 a2e530a1] Exception raised in the rpc call C_PokeW 
05-11-2018 10:52:25:694 : [3d58.75c4] 0x80000171 [ TRACE_CM] [ TRACE_ERROR] CRpcIOManagerClient::Poke (com\complus\dtc\dtc\cm\src\iomgrclt.cpp@1081): [Remote:DESKTOP-99PFPB8 a2e530a1] PokeWrapper call failed 

目前我陷入困境,有人能解释这些错误的含义吗?

我已尝试的解决步骤:

  • 重启DTC服务,随后重启SQL Server服务
  • 重新安装DTC(执行msdtc -uninstall,重启系统,msdtc -install,msdtc -resetlog)
  • 启用Network DTC Access(尽管是单机环境),勾选了"Allow Remove Clients"、"Allow Remote Administration"、"Allow Inbound"、"Allow Outbound"和"No Authentication Required"
  • 全新安装Windows系统

错误含义解析

先拆解日志里的关键错误点:

  1. RpcMgmtInqServerPrincName failed. The partner does not support secure calls:SQL Server尝试通过安全RPC协议和MSDTC通信,但MSDTC不支持这种安全调用方式,或者两者的安全配置完全不匹配,导致握手失败。
  2. SecurePokeWrapper call failed:安全模式下的Poke调用(这是DTC和SQL Server之间用来验证连通性的核心操作)失败后,系统自动尝试降级到非安全模式,但非安全模式的PokeWrapper调用也失败了,最终触发了"MSDTC不可用"的错误。

说白了,核心问题就是SQL Server和MSDTC之间的RPC通信安全配置不兼容,哪怕是单机环境,这种进程间通信也需要权限和设置的精准匹配。

针对性排查建议

你已经做了不少基础修复,试试这些更精准的操作:

  • 给SQL Server账户加DTC权限:把SQL Server的服务账户(默认是NT Service\MSSQLSERVER)添加到本地的Distributed Transaction Coordinator Users组里,确保它有访问MSDTC的权限。
  • 验证并修复SPN配置:日志里提到用NT Service\MSSQLSERVER作为SPN注册,打开命令提示符(管理员权限),执行setspn -L NT Service\MSSQLSERVER查看是否有MSSQLSvc/DESKTOP-99PFPB8和MSSQLSvc/DESKTOP-99PFPB8:1433(1433替换成你的SQL端口)这两个SPN,如果缺失,执行:
    setspn -A MSSQLSvc/DESKTOP-99PFPB8 NT Service\MSSQLSERVER
    setspn -A MSSQLSvc/DESKTOP-99PFPB8:1433 NT Service\MSSQLSERVER
    
  • 检查防火墙规则:临时关闭Windows防火墙测试一下,如果能正常运行,说明防火墙拦截了RPC通信。之后再配置允许MSDTC的规则(默认端口135,还有动态端口范围)。
  • 调整DTC安全设置:打开「组件服务」→「计算机」→「我的电脑」→「分布式事务协调器」→「本地DTC」→右键「属性」→「安全」选项卡,除了你已勾选的,再勾选Enable XA Transactions(如果你的事务需要XA支持),同时确认Network Service账户在DTC的安全设置里有足够权限。
  • 检查注册表项:打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC,如果存在AllowOnlySecureRpcCalls项,把它的值改成0(值为1会强制安全RPC,容易导致不兼容)。

试试这些步骤,应该能解决你的问题。


内容的提问来源于stack exchange,提问作者Warren Reed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:25:00