Koordynator transakcji rozproszonych (DTC) dla usługi Azure SQL Managed Instance

Dotyczy:Azure SQL Managed Instance

Ten artykuł zawiera omówienie koordynatora transakcji rozproszonych (DTC) dla usługi Azure SQL Managed Instance. Za pomocą usługi DTC można uruchamiać transakcje rozproszone w środowiskach mieszanych, w tym między wystąpieniami zarządzanymi, wystąpieniami programu SQL Server, innymi systemami zarządzania relacyjnymi bazami danych (RDBMS), aplikacjami niestandardowymi i innymi uczestnikami transakcji hostowanymi w dowolnym środowisku, które mogą ustanowić łączność sieciową z platformą Azure.

Uwaga

Distributed Transaction Coordinator dla usługi Azure SQL Managed Instance stanowi cześć o fali funkcji z listopada 2022 r. Aby dowiedzieć się więcej na temat osi czasu wdrożenia fali funkcji, zobacz Fala funkcji z listopada 2022 r.

Scenariusze

Możesz włączyć usługę DTC dla usługi Azure SQL Managed Instance do uruchamiania transakcji rozproszonych w wielu środowiskach, które mogą ustanowić łączność sieciową z platformą Azure. Usługa DTC dla usługi SQL Managed Instance jest zarządzana, co oznacza, że platforma Azure zajmuje się zarządzaniem i konserwacją, na przykład rejestrowaniem, magazynem, dostępnością dtC i siecią. Oprócz aspektu zarządzanego usługa DTC dla usługi SQL Managed Instance jest tą samą usługą systemu Windows DTC, która obsługuje tradycyjne transakcje rozproszone dla programu SQL Server.

Usługa DTC dla usługi SQL Managed Instance odblokowuje szeroką gamę technologii i scenariuszy, w tym XA, .NET, T-SQL, COM+, ODBC i JDBC.

Aby uruchomić transakcje rozproszone, wykonaj następujące zadania:

  1. Skonfiguruj usługę DTC.
  2. Włącz łączność sieciową między uczestnikami.
  3. Skonfiguruj ustawienia systemu DNS.

Uwaga

W przypadku transakcji rozproszonych T-SQL lub .NET w bazach danych hostowanych tylko przez wystąpienia zarządzane zalecamy używanie natywnej obsługi transakcji rozproszonych.

Wymagania

Aby zmienić ustawienia usługi DTC, musisz mieć uprawnienia do zapisu dla Microsoft.Sql/managedInstances/dtc zasobu. Aby wyświetlić ustawienia usługi DTC, musisz mieć uprawnienia do odczytu dla Microsoft.Sql/managedInstances/dtc zasobu.


Konfigurowanie usługi DTC

Usługę DTC można skonfigurować za pomocą witryny Azure Portal, programu Azure PowerShell i interfejsu wiersza polecenia.

Aby skonfigurować usługę DTC przy użyciu witryny Azure Portal:

  1. W witrynie Azure Portal przejdź do wystąpienia zarządzanego.

  2. W menu po lewej stronie w obszarze Ustawienia wybierz pozycję Koordynator transakcji rozproszonych.

    Zrzut ekranu przedstawiający wyróżnioną opcję menu, okienko Koordynator transakcji rozproszonych dla usługi SQL Managed Instance i kartę Podstawowe.

  3. Na karcie Podstawy ustaw opcję Koordynator transakcji rozproszonych na włączone.

  4. Na karcie Zabezpieczenia zezwól na przychodzące lub wychodzące transakcje i włącz XA lub SNA LU.

  5. Na karcie Sieć określ dns usługi DTC i uzyskaj informacje na temat konfigurowania zewnętrznego systemu DNS i sieci.

Łączność sieciowa

Aby korzystać z usługi DTC, wszyscy uczestnicy transakcji muszą mieć połączenie sieciowe z platformą Azure. Ponieważ wystąpienia zarządzane są zawsze wdrażane w dedykowanej sieci wirtualnej na platformie Azure, należy połączyć środowisko zewnętrzne z siecią wirtualną wystąpienia zarządzanego. W tym kontekście zewnętrzne odwołuje się do dowolnego obiektu lub procesu, który nie jest wystąpieniem zarządzanym. Jeśli zasób zewnętrzny używa również sieci wirtualnej na platformie Azure, możesz użyć komunikacji równorzędnej sieci wirtualnych. W przeciwnym razie ustanów łączność przy użyciu preferowanej metody, takiej jak sieć VPN typu punkt-lokacja, usługa Azure ExpressRoute lub inna technologia łączności sieciowej, która spełnia Twoje potrzeby biznesowe.

Port 135 musi zezwalać zarówno na komunikację przychodzącą, jak i wychodzącą, zakres portów 14000–15000 musi zezwalać na ruch przychodzący, a 49152-65535 musi zezwalać na komunikację wychodzącą zarówno w grupie zabezpieczeń sieci wirtualnej dla wystąpienia zarządzanego, jak i w dowolnej zaporze skonfigurowanej w środowisku zewnętrznym.

Ustawienia DNS

DtC opiera się na nazwie NetBIOS uczestnika transakcji do wzajemnej komunikacji. Ponieważ protokół NetBIOS nie jest obsługiwany przez sieć platformy Azure, a nazwy NetBIOS nie można rozpoznać w środowiskach mieszanych, usługa DTC dla wystąpienia zarządzanego opiera się na serwerach nazw DNS na potrzeby rozpoznawania nazw hostów. Hosty DTC wystąpienia zarządzanego są automatycznie rejestrowane na serwerze Usługi Azure DNS. Należy zarejestrować zewnętrzne hosty DTC na serwerze DNS. Wystąpienie zarządzane i środowisko zewnętrzne również muszą wymieniać sufiksy DNS.

Na poniższym diagramie przedstawiono rozpoznawanie nazw w różnych środowiskach:

Diagram przedstawiający rozpoznawanie nazw w różnych środowiskach podczas korzystania z usługi DTC.

Uwaga

Nie musisz konfigurować ustawień DNS, jeśli planujesz używać usługi DTC tylko dla transakcji XA.

Aby wymienić sufiksy DNS:

  1. W witrynie Azure Portal przejdź do wystąpienia zarządzanego.

  2. W menu po lewej stronie w obszarze Ustawienia wybierz pozycję Koordynator transakcji rozproszonych. Wybierz kartę Sieć.

    Zrzut ekranu przedstawiający kartę Sieć okienka DTC dla wystąpienia zarządzanego w witrynie Azure Portal z wyróżnionym nowym sufiksem DNS zewnętrznym.

  3. W konfiguracji DNS wybierz pozycję Nowy zewnętrzny sufiks DNS. Wprowadź sufiks DNS dla środowiska zewnętrznego, na przykład dnszone1.com.

  4. Skopiuj wartość sufiksu DNS hosta DTC. Następnie użyj polecenia Set-DnsClientGlobalSetting -SuffixSearchList $list programu PowerShell w środowisku zewnętrznym, aby ustawić sufiks DNS hosta DTC. Jeśli na przykład sufiks to abc1111111.database.windows.net, zdefiniuj $list parametr , aby uzyskać istniejące ustawienia DNS. Następnie dołącz do niego sufiks, jak pokazano w poniższym przykładzie:

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

Testowanie łączności sieciowej

Po skonfigurowaniu sieci i systemu DNS uruchom polecenie Test-Net Połączenie ion (TNC) między punktami końcowymi DTC wystąpienia zarządzanego i zewnętrznym hostem DTC.

Aby przetestować połączenie, najpierw zaktualizuj wartości konfigurowalne przez użytkownika. Następnie użyj następującego skryptu programu PowerShell w środowisku zewnętrznym, aby zidentyfikować w pełni kwalifikowaną nazwę domeny (FQDN) wystąpienia zarządzanego hosta DTC. Oto przykład:

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

$SubscriptionId = "a1a1a1a1-8372-1d28-a111-1a2a31a1a1a1" 
$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 
# =============================================================== 

Dane wyjściowe JSON wyglądają podobnie do następującej przykładowej nazwy FQDN:

chn000000000000.zcn111111111.database.windows.net

Gdzie:

  • chn000000000000 to nazwa NetBIOS hosta DTC wystąpienia zarządzanego.
  • zcn111111111.database.windows.net jest sufiksem DNS.

Następnie uruchom TNC zarówno do nazwy FQDN, jak i nazwy NetBIOS hosta DTC wystąpienia zarządzanego na porcie 135. W poniższym przykładzie pierwszy wpis weryfikuje łączność sieciową. Drugi wpis sprawdza, czy ustawienia DNS są poprawne.

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

Jeśli łączność i sufiksy DNS są poprawnie skonfigurowane, zostanie wyświetlony wyjściowy tcpTestSucceeded : True .

Po stronie wystąpienia zarządzanego utwórz zadanie agenta SQL, aby uruchomić polecenie TNC programu PowerShell w celu przetestowania łączności z hostem zewnętrznym.

Jeśli na przykład nazwa FQDN hosta zewnętrznego to host10.dnszone1.com, uruchom następujący test za pośrednictwem zadania agenta SQL:

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

Ograniczenia

Podczas korzystania z usługi DTC z usługą SQL Managed Instance należy wziąć pod uwagę następujące ograniczenia:

  • Uruchamianie rozproszonych transakcji T-SQL między usługą SQL Managed Instance i usługą RDBMS innej firmy nie jest obsługiwane. Usługa SQL Managed Instance nie obsługuje serwerów połączonych, które mają maszyny RDBMS innych firm. Z drugiej strony obsługiwane jest uruchamianie rozproszonych transakcji T-SQL między wystąpieniami zarządzanymi a programem SQL Server i innymi produktami opartymi na programie SQL Server.
  • Nazwy hostów w środowisku zewnętrznym nie mogą przekraczać 15 znaków.
  • Transakcje rozproszone w usłudze Azure SQL Database nie są obsługiwane w przypadku usługi DTC.
  • W przypadku uwierzytelniania usługa DTC obsługuje wyłącznie opcję bez uwierzytelniania . Opcje uwierzytelniania wzajemnego i przychodzącego uwierzytelniania wywołującego nie są dostępne. Ponieważ usługa DTC wymienia tylko komunikaty synchronizacji, a nie dane użytkownika, a ponieważ komunikuje się wyłącznie z siecią wirtualną, to ograniczenie nie jest zagrożeniem bezpieczeństwa.

Zarządzaj transakcjami

Aby wyświetlić statystyki transakcji rozproszonych, zobacz sys.dm_tran_distributed_transaction_stats.

Dziennik DTC można zresetować przy użyciu procedury składowanej sp_reset_dtc_log .

Transakcje rozproszone można zarządzać przy użyciu procedury składowanej sys.sp_manage_distributed_transaction .

Następne kroki

Aby uzyskać informacje na temat natywnej obsługi transakcji rozproszonych wystąpienia zarządzanego, zobacz Elastic transactions (Transakcje elastyczne).