Aracılığıyla paylaş


Azure SQL Yönetilen Örneği için Dağıtılmış İşlem Düzenleyicisi (DTC)

Şunlar için geçerlidir:Azure SQL Yönetilen Örneği

Bu makalede, Azure SQL Yönetilen Örneği için Dağıtılmış İşlem Düzenleyicisi'ne (DTC) genel bir bakış sağlanır. Dağıtılmış işlemleri karma ortamlarda çalıştırmak için DTC kullanabilirsiniz. Bunlar arasında SQL yönetilen örnekler, SQL Server örnekleri, diğer ilişkisel veritabanı yönetim sistemleri (RDBMS), özel uygulamalar ve Azure'a ağ bağlantısı kurabilen herhangi bir ortamda barındırılan diğer işlem katılımcıları yer alır.

Senaryolar

Azure SQL Yönetilen Örneği için DTC'yi etkinleştirerek Azure'a ağ bağlantısı kurabilen birden çok ortamda dağıtılmış işlemler çalıştırabilirsiniz. SQL Yönetilen Örneği için DTC yönetilir, bu da Azure'ın günlük, depolama, DTC kullanılabilirliği ve ağ gibi yönetim ve bakım işlemleriyle ilgilendiği anlamına gelir. Yönetilen yönün yanı sıra, SQL Yönetilen Örneği için DTC, SQL Server için geleneksel dağıtılmış işlemleri destekleyen aynı DTC Windows hizmetidir.

SQL Yönetilen Örneği için DTC, XA, .NET, T-SQL, COM+, ODBC ve JDBC gibi çok çeşitli teknolojilere ve senaryolara olanak tanır.

Dağıtılmış işlemleri çalıştırmak için şu görevleri tamamlayın:

  1. DTC'yi yapılandırın.
  2. Katılımcılar arasındaki ağ bağlantısını etkinleştirin.
  3. DNS ayarlarını yapılandırın.

Not

Yalnızca SQL yönetilen örnekleri tarafından barındırılan veritabanları üzerinde T-SQL veya .NET dağıtılmış işlemleri gerçekleştirmek için dağıtılmış işlemler için yerel destek kullanmanızı öneririz.

Gereksinimler

DTC ayarlarını değiştirmek için kaynak için Microsoft.Sql/managedInstances/dtc yazma izinlerine sahip olmanız gerekir. DTC ayarlarını görüntülemek için kaynak için Microsoft.Sql/managedInstances/dtc okuma izinlerine sahip olmanız gerekir.

135 numaralı bağlantı noktası hem gelen hem de giden iletişime izin vermelidir, 14000-15000 bağlantı noktası aralığı gelen bağlantıya izin vermelidir ve 49152-65535,SQL yönetilen örneği için sanal ağ güvenlik grubunda ve dış ortamda ayarlanmış tüm güvenlik duvarlarında giden iletişime izin vermelidir.

DTC'yi yapılandırın

DTC'yi Azure portalı, Azure PowerShell ve Azure CLI ile yapılandırabilirsiniz.

DTC'yi Azure portalını kullanarak yapılandırmak için şu adımları izleyin:

  1. Azure portalında SQL yönetilen örneğinize gidin.

  2. Ayarlar'ın altında Dağıtılmış İşlem Düzenleyicisi'ne tıklayın.

    Vurgulanan menü seçeneğini, SQL Yönetilen Örneği için Dağıtılmış İşlem Düzenleyicisi bölmesini ve Temel Bilgiler sekmesini gösteren ekran görüntüsü.

  3. Temel Bilgiler sekmesinde Dağıtılmış İşlem Düzenleyicisi'ni Etkin olarak ayarlayın.

  4. Güvenlik sekmesinde, gelen veya giden işlemlere izin verin ve XA veya SNA LU'yi etkinleştirin.

  5. sekmesinde DTC DNS'yi belirtin ve dış DNS ile ağı yapılandırmak için bilgi alın.

Ağ bağlantısı

DTC'yi kullanmak için tüm işlem katılımcılarının Azure'a bir ağ bağlantısı olmalıdır. SQL yönetilen örnekleri her zaman Azure'daki ayrılmış bir sanal ağa dağıtıldığından, dış ortamınızı SQL yönetilen örneğinizin sanal ağına bağlamanız gerekir. Bu bağlamda dış, SQL ile yönetilen örneğinizin parçası olmayan herhangi bir nesne veya işleme atıfta bulunur. Dış kaynağınız Azure'da bir sanal ağ da kullanıyorsa, sanal ağ eşlemesini kullanabilirsiniz. Aksi takdirde noktadan siteye VPN, Azure ExpressRoute veya iş gereksinimlerinizi karşılayan başka bir ağ bağlantısı teknolojisi gibi tercih ettiğiniz yöntemi kullanarak bağlantı kurun.

135 numaralı bağlantı noktası hem gelen hem de giden iletişime izin vermelidir, 14000-15000 bağlantı noktası aralığı gelen bağlantıya izin vermelidir ve 49152-65535,SQL yönetilen örneği için sanal ağ güvenlik grubunda ve dış ortamda ayarlanmış tüm güvenlik duvarlarında giden iletişime izin vermelidir.

DNS ayarları

DTC, karşılıklı iletişim için bir işlem katılımcının NetBIOS adına dayanır. Azure ağı NetBIOS protokollerini desteklemediğinden ve NetBIOS adları karma ortamlarda çözümlenemediğinden, SQL yönetilen örneği için DTC, ana bilgisayar adı çözümlemesi için DNS ad sunucularına dayanır. SQL yönetilen örnek DTC barındırıcıları Azure DNS sunucusunda otomatik olarak kaydedilir. Dış DTC konaklarını bir DNS sunucusuna kaydetmeniz gerekir. SQL yönetilen örneği ve dış ortamı da DNS soneklerini değiştirmelidir.

Aşağıdaki diyagramda karma ortamlarda ad çözümlemesi gösterilmektedir:

DTC kullandığınızda karma ortamlarda ad çözümlemesini gösteren diyagram.

Not

DTC'yi yalnızca XA işlemleri için kullanmayı planlıyorsanız DNS ayarlarını yapılandırmanız gerekmez.

DNS soneklerini değiştirmek için:

  1. Azure portalında SQL yönetilen örneğinize gidin.

  2. Ayarlar'ın altında Dağıtılmış İşlem Düzenleyicisi'ni ve ardından Ağ sekmesini seçin.

    Azure portalında, SQL yönetilen örneğinizin DTC bölmesinin Ağ sekmesini gösteren ekran görüntüsü.

  3. DNS yapılandırması'nda Yeni dış DNS son eki'ni seçin. Dış ortamınız için DNS sonekini girin, örneğin dnszone1.com.

  4. DTC Ana Bilgisayarı DNS soneki değerini kopyalayın. Ardından dış ortamınızda PowerShell komutunu Set-DnsClientGlobalSetting -SuffixSearchList $list kullanarak DTC Ana Bilgisayarı DNS sonekini ayarlayın. Örneğin, sonekiniz ise abc1111111.database.windows.net, mevcut DNS ayarlarını almak için parametrenizi $list tanımlayın. Ardından, aşağıdaki örnekte gösterildiği gibi son ekinizi ekleyin:

    $list = (Get-DnsClientGlobalSetting).SuffixSearchList + "abc1111111.database.windows.net"
    Set-DnsClientGlobalSetting -SuffixSearchList $list
    

Ağ bağlantısını test etme

Ağ ve DNS'yi yapılandırdıktan sonra SQL yönetilen örneğinizin DTC uç noktalarıyla dış DTC konağı arasında Test-NetConnection (TNC) çalıştırın.

Bağlantıyı test etmek için önce kullanıcı tarafından yapılandırılabilir değerleri güncelleştirin. Ardından, DTC ana bilgisayarının SQL yönetilen örneğinin tam nitelikli etki alanı adını (FQDN) belirlemek için harici ortamda aşağıdaki PowerShell betiğini kullanın. Bir örnek aşağıda verilmiştir:

# ===============================================================
# Get DTC settings
# ===============================================================
# User-configurable values
#

$SubscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$RgName = "my-resource-group"
$MIName = "my-instance-name"

# ===============================================================
#

$startMoveUri = "https://management.azure.com/subscriptions/" + $SubscriptionId + "/resourceGroups/" + $RgName + "/providers/Microsoft.Sql/managedInstances/" + $MIName + "/dtc/current?api-version=2022-05-01-preview"
Write-Host "Sign in to Azure subscription $SubscriptionID ..."
Select-AzSubscription -SubscriptionName $SubscriptionID
$azContext = Get-AzContext
$azProfile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile
$profileClient = New-Object -TypeName Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient -ArgumentList ($azProfile)
Write-Host "Getting authentication token for REST API call ..."
$token = $profileClient.AcquireAccessToken($azContext.Subscription.TenantId)
$authHeader = @{'Content-Type'='application/json';'Authorization'='Bearer ' + $token.AccessToken}

# Invoke API call to start the operation
#

Write-Host "Starting API call..."
$startMoveResp = Invoke-WebRequest -Method Get -Headers $authHeader -Uri $startMoveUri
Write-Host "Response:" $startMoveResp

# End
# ===============================================================

JSON çıkışı aşağıdaki FQDN örneğine benzer:

chn000000000000.zcn111111111.database.windows.net

Where:

  • chn000000000000 , SQL yönetilen örneği DTC ana bilgisayarının NetBIOS adıdır.
  • zcn111111111.database.windows.net DNS sonekidir.

Ardından, 135 numaralı bağlantı noktasında hem FQDN hem de SQL yönetilen örneği DTC ana bilgisayarının NetBIOS adı için bir TNC çalıştırın. Aşağıdaki örnekte, ilk girdi ağ bağlantısını doğrular. İkinci girdi, DNS ayarlarının doğru olduğunu doğrular.

tnc chn000000000000.zcn111111111.database.windows.net -Port 135
tnc chn000000000000 -Port 135

Bağlantı ve DNS son ekleri doğru yapılandırıldıysa TcpTestSucceeded : True çıkışı görüntülenir.

SQL yönetilen örneği tarafında, dış konağa bağlantıyı test için TNC PowerShell komutunu çalıştırmak amacıyla bir SQL Agent iş görevi oluşturun.

Örneğin, dış konağınız için FQDN ise host10.dnszone1.com, SQL Aracısı işiniz aracılığıyla aşağıdaki testi çalıştırın:

tnc host10.dnszone1.com -Port 135
tnc host10 -Port 135

Sınırlamalar

SQL Yönetilen Örneği ile DTC kullanırken aşağıdaki sınırlamaları göz önünde bulundurun:

  • SQL Yönetilen Örneği ile üçüncü taraf RDBMS arasında dağıtılmış T-SQL işlemlerinin çalıştırılması desteklenmez. SQL Yönetilen Örneği, üçüncü taraf RDBMS'ye sahip bağlı sunucuları desteklemez. Buna karşılık, SQL yönetilen örnekleri ve SQL Server ile diğer SQL Server tabanlı ürünler arasında dağıtılmış T-SQL işlemlerinin çalıştırılması desteklenir.
  • Dış ortamlardaki konak adları 15 karakterden uzun olamaz.
  • Azure SQL Veritabanı dağıtılmış işlemler DTC ile desteklenmez.
  • Kimlik doğrulaması için DTC yalnızca kimlik doğrulaması yok seçeneğini destekler. Karşılıklı kimlik doğrulaması ve gelen arayan kimlik doğrulaması seçenekleri kullanılamaz. DTC kullanıcı verilerini değil yalnızca eşitleme iletilerini değiştirdiğinden ve yalnızca sanal ağ ile iletişim kuracağından bu sınırlama bir güvenlik riski değildir.

İşlemleri yönetme

Dağıtılmış işlemlerin istatistiklerini görüntülemek için bkz. sys.dm_tran_distributed_transaction_stats.

DTC günlüğünü sp_reset_dtc_log saklı yordamı ile sıfırlayabilirsiniz.

Dağıtılmış işlemler sys.sp_manage_distributed_transaction saklı yordamıyla yönetilebilir.

Sonraki adım