SQL yük devretme kümesiyle kullanmak üzere MSDTC yüklemesini yeniden derleme veya taşıma
Bu makalede, yük devretme kümelenmiş SQL Server yüklemesi ile kullanılmak üzere bozuk bir Microsoft Dağıtılmış İşlem Düzenleyicisi (MSDTC) yüklemesini yeniden derleme işlemi açıklanır.
Şunlar için geçerlidir: Windows Server 2019, Windows Server 2016, Windows Server 2012 R2
Özgün KB numarası: 294209
Özet
Aşağıdaki blogda Windows Server 2008 sürümünden bu yana MSDTC davranışındaki değişikliklerle ilgili ayrıntılı bilgiler yer alır.
SQL Yük Devretme Kümesinde MSDTC Önerileri
Aşağıdaki Sık Sorulan Soruların (SSS) amacı, geçerli önerileri ve en iyi yöntemleri dahil etmek üzere SQL Server Yük Devretme Kümelenmiş örnekleriyle kullanıldığında MSDTC ile ilgili sık sorulan soruları ele almaktır.
MSDTC, istemci uygulamalarının bir işleme birkaç farklı veri kaynağı eklemesine izin veren ve ardından dağıtılmış işlemin işlemde yer alan tüm sunucular arasında işlenmesini koordine eden bir işlem yöneticisidir. Bu işlem, işlemin her parçası başarılı olursa veya işlem işleminin herhangi bir parçası başarısız olursa geri alınırsa işlemin işlenmesini sağlamaya yardımcı olur.
Birçok kişi SQL Server yüklemeden önce neden MSDTC'yi yüklememiz gerektiğini soruyor. Artık bu işlemi yapmanız gerekmez. bu, SQL Server 2005'in gerekli olduğu bir gereksinimdi. bu SQL Server sürümü yaşam döngüsünü ve bu nedenle SQL Server yükleme gereksinimini sona erdirdi.
SQL Server Windows Yük Devretme Kümelemesi gibi yüksek oranda kullanılabilir bir ortamda dağıtırken, MSDTC hizmetlerinin davranışını daha öngörülebilir hale getirebilecek bazı en iyi yöntemler vardır.
Veritabanları arası ve/veya DTC işlem desteği konusu bir Kullanılabilirlik Grubu altında geldiğinde hızlı yanıt DESTEKLENMEDİ!.
Bu doğru bir ifadedir ve konuşma daha sonra odaklanma eğilimindedir ama neden? Aslında, bazı DTA'lar bu işlem türlerinin çeşitli biçimlerini test etti ve hatalarla karşılaşmadı.
Sorun, testin tamamlanmaması ve gereken iki aşamalı işleme etkinliğinin veri kaybına veya belirli yapılandırmalarda beklendiği gibi kurtarılmayan bir veritabanına neden olmasıdır. Aslında, SQL Server test edicileri, üretim sunucusunda oluşturulması zor (ancak imkansız olmayan) senaryolar oluşturmak için stratejik konumlarda hatalar ekler. Daha fazla bilgi için bkz . Desteklenmeyen: TC/Çapraz Veritabanı İşlemli AG'ler.
Windows 2008 Yük Devretme kümesi ve sonraki sürümlerde MSDTC, Windows 2008'de yeniden tasarlandığından MSDTC hizmetinin işlevselliğini kullanmak için MSDTC'yi kümelemelisiniz. Windows 2003'ün aksine, Windows Yük Devretme Kümesi'ni yüklerseniz MSDTC'yi kümelemelisiniz. Varsayılan olarak MSDTC hizmeti, Yük Devretme Kümelemesi yüklü olsa bile yerel olarak çalıştığından, Windows 2008 kullanılırken bu durum artık geçerli değildir.
SQL Server Yük Devretme Kümelenmiş Örneğiniz MSDTC gerektiriyorsa ve MSDTC kaynaklarının SQL Server Örneği ile yük devretme gerçekleştirmesini gerektiriyorsa, SQL Server örneğini içeren ve kullandığı Yük DevretmeKümesi rolünde bir MSDTC kaynağı oluşturmanızı öneririz:
- SQL Server ağ adı\istemci erişim noktası
- SQL Server rolündeki bir disk
- MSDTC kaynağını SQL sanal sunucu adıyla adlandırın.
PowerShell kullanarak yeni bir MSDTC kümesi kaynağını ayarlama ve test edin
aşağıdaki bölümleri dahil <> etmek üzere ve arasındaki içeriği değiştirip yürüten yeni bir MSDTC kaynağı oluşturun.
$SqlRole = <Actual name of the role containing the SQL Server instance> $SqlNetName = <Actual SQL Servernetwork resourcename> $VSqlSrv = <Actual SQL Server virtual server name> $CluDsk = <Actual disk resource name>
MSDTC kaynağı sağlanan adı kabul etmediyse, Yeni Dağıtılmış İşlem Düzenleyicisi'ni RealSqlVsName ile değiştirerek aşağıdaki PowerShell'i kullanarak adı değiştirebilirsiniz:
Get-ClusterResource "New Distributed Transaction Coordinator" | %{$_.Name = RealSqlVsName }
Hala etkinse RealSqlVsName yerine kullanabilirsiniz
$VSqlSrv
.Aşağıdaki betiği kullanarak güvenlik duvarı kurallarını doğrulayın:
Set-NetFirewallRule -Name 'RPC Endpoint Mapper' -Enabled True Set-NetFirewallRule -Name 'DTC incoming connections' -Enabled True Set-NetFirewallRule -Name 'DTC outgoing connections' -Enabled True
Aşağıdaki betiği kullanarak MSDTC ağ kimlik doğrulamasını ayarlayın:
Set-DtcNetworkSetting -AuthenticationLevel Mutual ` -DtcName "Local" -InboundTransactionsEnabled $True ` -LUTransactionsEnabled $True ` -OutboundTransactionsEnabled $True ` -RemoteAdministrationAccessEnabled $False ` -RemoteClientAccessEnabled $False ` -XATransactionsEnabled $True -verbose
Aşağıdaki komutu kullanarak yeni MSDTC kaynağının listelendiğini doğrulayın:
Get-Dtc -Verbose |Sort-Object DtcName
Yeni MSDTC kaynağını test edin.
Test-Dtc -LocalComputerName RealSqlVsName -Verbose
Hala etkinse RealSqlVsName yerine kullanabilirsiniz
$VSqlSrv
. Yerel yüklemeyi test etmek için kullanın$Env:COMPUTERNAME
. Güvenlik duvarı kurallarını ve MSDTC kimlik doğrulaması PowerShell komutlarını diğer tüm mevcut küme düğümlerinde yürütmeniz gerekir.MSDTC'i test edin.
Bu örnekte AdventureWorks2012 veritabanını kullanacağız. Test etmek istediğiniz gerçek veritabanı adını kullanmanız gerekir. SQL Server sorgu penceresinde aşağıdaki SQL deyimini çalıştırın:
USE AdventureWorks2012; GO BEGIN DISTRIBUTED TRANSACTION; -- Enter fake transaction to the database INSERT SQL_Statement DELETE SQL_Statement COMMIT TRANSACTION GO
Şimdi tek bir satırın etkilendiğini ve eklenen kaydın mevcut olmadığını görmeniz gerekir.
Başvurular
SQL Server'da Dağıtılmış İşlemleri kullanmak için önerilen MSDTC ayarları
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin