我收到错误:
与基础事务管理器的通信失败
当我尝试从visual studio 2010运行我的应用程序时。我在google上搜索此问题,我已尝试了所有可能的解决方案来解决此错误。
这里我改变了我的DTC属性。
-- Network DTC Access
-- Allow Inbound
-- Allow Outbound
-- Allow Remote Administrator
-- Allow Remote Clients
-- No Authentication Required
-- Enable XA Transaction
-- Enable SNA LU 6.2 Transaction
如果有人知道这个问题的解决方案,请告诉我。
由于 Manoj Sitapara
答案 0 :(得分:26)
尝试允许DTC通过防火墙进行通信。
答案 1 :(得分:14)
在分布式事务中涉及的所有计算机上下载DTCPing
并运行它。
大多数时候它会给你确切的错误和错误(比如相同的CID)等等。
可能的原因:
hosts
文件以添加映射IP /主机名,或者,如果在域中,则为其添加DNS别名。答案 2 :(得分:4)
检查MSDTC troubleshooting guide,其中列出了重复的CID作为潜在问题。您可以使用以下Powershell脚本来检测重复的CID,并在需要时使用WinRM重新安装MSDTC:
write-host "Checking for duplicate CIDs and reinstalling MSDTC if needed."
$servers = "server1","server2","server3"
$CIDs = Invoke-Command -ComputerName $servers -ScriptBlock { gci Microsoft.PowerShell.Core\Registry::HKEY_CLASSES_ROOT\CID | foreach { $_.Name } | Out-String -Stream } #Array of all CIDs on all servers
$UniqueCIDs = $CIDs | select -Unique
if($CIDs.Length -eq $UniqueCIDs.Length){
Write-Output "All CIDs are unique, so we don't need to reinstall MSDTC"
} else {
Write-Output "Found duplicate CIDs, so we need to reinstall MSDTC on all VMs"
Invoke-Command -ComputerName $servers -ScriptBlock {
write-output "`r`nUninstalling MSDTC to regenerate CIDs on $env:computername"
msdtc -uninstall | Write-Output
sleep 25 #wait for previous command to finish
write-output "`r`nReinstalling MSDTC to regenerate CIDs on $env:computername"
msdtc -install | Write-Output
sleep 25 #wait for previous command to finish
write-output "`r`nSetting MSDTC service to automatic on $env:computername"
Set-Service msdtc -startuptype "auto"
write-output "`r`nWARNING: $env:computername may need to be restarted for changes to take effect."
}
}
答案 3 :(得分:0)
尝试在群集上设置DTC和MSMQ 时,我收到了失败的通信错误。在我的情况下,潜在的错误是" Ran out of memory。"我能够将事务性消息从群集发送到另一台服务器,但不能从该服务器返回到群集。我的服务会抛出这个异常:
System.Transactions.TransactionAbortedException: The transaction has aborted.
---> System.Transactions.TransactionManagerCommunicationException: Communication
with the underlying transaction manager has failed. --->
System.Runtime.InteropServices.COMException: Ran out of memory (Exception from HRESULT: 0x80000002)
这篇文章有一个非常模糊的解决方案:http://www.nervousadmin.com/category/microsoft/windows/dtc/
总结:
注册表中有一个guid,用于HKLM \ Cluster \ ResourceTypes \ Distributed Transaction Coordinator下的关键ClusterDefaultResource,需要与DTC服务的可执行路径上的guid参数对齐。
此问题的另一个症状是,如果尝试通过组件服务管理控制台访问DTC属性,则会出现内存不足错误。在组件服务/计算机/我的电脑/分布式事务处理协调器下的控制台树中查找,然后右键单击其中列出的每个DTC。如果你的guid没有对齐,这将抛出错误。