[英]How do I enable MSDTC on SQL Server?
這甚至是一個有效的問題嗎? 我有一個使用 MSTDC 的 .NET Windows 應用程序,它拋出異常:
System.Transactions.TransactionManagerCommunicationException:分布式事務管理器 (MSDTC) 的網絡訪問已被禁用。 請使用組件服務管理工具在 MSDTC 的安全配置中為網絡訪問啟用 DTC ---> System.Runtime.InteropServices.COMException (0x8004D024):事務管理器已禁用對遠程/網絡事務的支持。 (來自 HRESULT 的異常:0x8004D024)在 System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize, Byte[] propgationToken, IntPtr managedIdentifier, Guid& transactionIdentifier, OletxTransactionIsolationLevel&isolationLevel&translationLevel&IShimShimShim)....
我按照Kbalertz 指南在安裝了該應用程序的 PC 上啟用了 MSDTC ,但仍然出現錯誤。
我想知道這是不是數據庫問題? 如果是這樣,我該如何解決?
用於Windows Server 2008 r2和Windows Server 2012 R2
單擊“ 開始” ,單擊“運行” ,鍵入dcomcnfg ,然后單擊“ 確定”以打開“ 組件服務” 。
在控制台樹中,單擊以展開“ 組件服務” ,單擊以展開“ 計算機” ,單擊以展開“ 我的電腦” ,單擊以展開“ 分布式事務處理協調器” ,然后單擊“ 本地DTC” 。
右鍵單擊“ 本地DTC” ,然后單擊“ 屬性”以顯示“ 本地DTC屬性”對話框。
單擊“ 安全”選項卡。
選中“網絡DTC訪問”復選框。
最后選中“允許入站”和“允許出站”復選框。
單擊應用 , 確定 。
將彈出有關重新啟動服務的消息。
單擊“ 確定” ,這就是全部。
參考: https : //msdn.microsoft.com/en-us/library/dd327979.aspx
注意:有時本地計算機或服務器上的網絡防火牆可能會中斷您的連接,因此請確保為C:\\Windows\\System32\\msdtc.exe
創建“允許入站”和“允許出站”連接的規則
你甚至需要MSDTC嗎? 您遇到的升級通常是由在單個TransactionScope中創建多個連接引起的。
如果確實需要它,則需要按照錯誤消息中的說明啟用它。 在XP上:
我發現最好的調試方法是使用名為DTCPing的微軟工具
我在舊的公司網絡中遇到了問題,我有一些提示:
根據我的經驗,如果DTCPing能夠設置從客戶端發起並從服務器啟動的DTC連接,那么您的交易不再是問題。
還可以在此處查看如何從控制面板的services.msc打開MSDTC。
在觸發器所在的服務器上,您需要打開MSDTC服務。 您可以通過單擊開始>設置>控制面板>管理工具>服務來實現此目的。 找到名為“分布式事務處理協調器”的服務並右鍵單擊(在其上並選擇)>啟動。
必須在服務器和客戶端兩個系統上啟用MSDTC。
此外,請確保阻止RPC的系統之間沒有防火牆。
DTCTest是一個很好的小應用程序,可以幫助您解決任何其他問題。
@擔,
我是否不需要啟用msdtc才能使事務有效?
僅分布式事務 - 涉及多個連接的事務。 確保您只在交易中打開一個連接並且不會升級 - 性能也會好得多。
MSDTC 可以使用 MsDtc PowerShell 模塊進行配置,例如:
# Import the module
Import-Module -Name MsDtc
# Set the DTC config
$dtcNetworkSetting = @{
DtcName = 'Local'
AuthenticationLevel = 'NoAuth'
InboundTransactionsEnabled = $true
OutboundTransactionsEnabled = $true
RemoteClientAccessEnabled = $true
RemoteAdministrationAccessEnabled = $true
XATransactionsEnabled = $false
LUTransactionsEnabled = $true
}
Set-DtcNetworkSetting @dtcNetworkSetting
# Restart the MsDtc service
Get-Service -Name MsDtc | Restart-Service
在支持分布式事務的每台機器上運行(即運行 MSDTC 服務的機器)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.