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

  1. 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 .

  2. 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
    
  3. 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
    
  4. Aşağıdaki komutu kullanarak yeni MSDTC kaynağının listelendiğini doğrulayın:

    Get-Dtc -Verbose |Sort-Object DtcName
    
  5. 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.

  6. 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ı