Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:Azure SQL Managed Instance
Dieser Artikel bietet eine Übersicht über Distributed Transaction Coordinator (DTC) für Azure SQL Managed Instance. Sie können DTC verwenden, um verteilte Transaktionen in gemischten Umgebungen auszuführen. Dazu gehören sql-verwaltete Instanzen, SQL Server-Instanzen, andere relationale Datenbankverwaltungssysteme (RDBMS), benutzerdefinierte Anwendungen und andere Transaktionsteilnehmer, die in jeder Umgebung gehostet werden, die eine Netzwerkkonnektivität mit Azure herstellen können.
Szenarien
Sie können DTC für Azure SQL Managed Instance für die Ausführung von verteilten Transaktionen über Umgebungen hinweg aktivieren, die Netzwerkkonnektivität mit Azure herstellen können. DTC für SQL Managed Instance wird verwaltet, was bedeutet, dass Azure die Verwaltungs- und Wartungsaufgaben übernimmt, z. B. Protokollierung, Speicherung, DTC-Verfügbarkeit und Netzwerkfunktionen. Abgesehen vom Aspekt der Verwaltung ist DTC für SQL Managed Instance derselbe DTC-Windows-Dienst, der herkömmliche verteilte Transaktionen für SQL Server unterstützt.
DTC für SQL Managed Instance entsperrt eine Vielzahl von Technologien und Szenarien, einschließlich XA, .NET, T-SQL, COM+, ODBC und JDBC.
Schließen Sie zum Ausführen von verteilten Transaktionen die folgenden Aufgaben ab:
- Konfigurieren Sie DTC.
- Aktivieren Sie die Netzwerkkonnektivität zwischen Teilnehmern.
- Konfigurieren Sie DNS-Einstellungen.
Hinweis
Für T-SQL oder .NET verteilte Transaktionen über Datenbanken, die nur von sql verwalteten Instanzen gehostet werden, empfehlen wir, native Unterstützung für verteilte Transaktionen zu verwenden.
Requirements (Anforderungen)
Zum Ändern der DTC-Einstellungen benötigen Sie Schreibberechtigungen für die Microsoft.Sql/managedInstances/dtc Ressource. Zum Anzeigen von DTC-Einstellungen benötigen Sie Leseberechtigungen für die Microsoft.Sql/managedInstances/dtc Ressource.
Port 135 muss sowohl eingehende als auch ausgehende Kommunikation zulassen. Der Portbereich 14000-15000 muss eingehende Kommunikation zulassen, und der Bereich 49152-65535 muss ausgehende Kommunikation zulassen, sowohl in der Netzwerksicherheitsgruppe der virtuellen Netzwerk für die SQL verwaltete Instanz als auch für jede Firewall, die in der externen Umgebung eingerichtet ist.
Konfigurieren von DTC
Sie können DTC mit dem Azure-Portal, Azure PowerShell und Azure CLI konfigurieren.
Führen Sie die folgenden Schritte aus, um DTC mithilfe des Azure-Portals zu konfigurieren:
Wechseln Sie im Azure-Portal zu Ihrer sql-verwalteten Instanz.
Wählen Sie unter "Einstellungen" die Option "Verteilte Transaktionskoordinator" aus.
Legen Sie auf der Registerkarte Grundlagen die Option Distributed Transaction Coordinator auf Aktiviert fest.
Lassen Sie auf der Registerkarte Sicherheit eingehende oder ausgehende Transaktionen zu, und aktivieren Sie XA oder SNA LU.
Geben Sie auf der Registerkarte Netzwerk das DTC-DNS an, und rufen Sie Informationen ab, um DNS und Netzwerkfunktionen zu konfigurieren.
Netzwerkkonnektivität
Um DTC verwenden zu können, müssen alle Transaktionsteilnehmer über eine Netzwerkverbindung mit Azure verfügen. Da SQL Managed Instances immer in einem dedizierten virtuellen Netzwerk in Azure bereitgestellt werden, müssen Sie Ihre externe Umgebung mit dem virtuellen Netzwerk Ihrer SQL Managed Instance verbinden. In diesem Kontext bezieht sich "extern " auf ein Objekt oder einen Prozess, der nicht ihre verwaltete SQL-Instanz ist. Wenn Ihre externe Ressource ebenfalls ein virtuelles Netzwerk in Azure verwendet, können Sie das Peering virtueller Netzwerke verwenden. Andernfalls stellen Sie die Konnektivität mithilfe Ihrer bevorzugten Methode her, z. B. durch Point-to-Site-VPN, Azure ExpressRoute oder eine andere Netzwerkkonnektivitätstechnologie, die Ihre geschäftlichen Anforderungen erfüllt.
Port 135 muss sowohl eingehende als auch ausgehende Kommunikation zulassen. Der Portbereich 14000-15000 muss eingehende Kommunikation zulassen, während der Bereich 49152-65535 ausgehende Kommunikation ermöglichen muss. Dies gilt sowohl für die Sicherheitsgruppe des virtuellen Netzwerks für die verwaltete SQL-Instanz als auch für jede Firewall, die in der externen Umgebung eingerichtet ist.
DNS-Einstellungen
DTC benötigt für die gegenseitige Kommunikation den NetBIOS-Namen eines Transaktionspartners. Da das Azure-Netzwerk das NetBIOS-Protokoll nicht unterstützt und NetBIOS-Namen in gemischten Umgebungen nicht aufgelöst werden können, basiert DTC für eine verwaltete SQL-Instanz auf DNS-Name-Servern zur Auflösung von Hostnamen. DTC-Hosts der verwalteten SQL-Instanz werden automatisch beim Azure DNS-Server registriert. Externe DTC-Hosts müssen von Ihnen bei einem DNS-Server registriert werden. Die von SQL verwaltete Instanz und externe Umgebung müssen auch DNS-Suffixe austauschen.
Das folgende Diagramm zeigt die Namensauflösung in gemischten Umgebungen:
Hinweis
Sie müssen keine DNS-Einstellungen konfigurieren, wenn Sie den DTC nur für XA-Transaktionen verwenden möchten.
So tauschen Sie DNS-Suffixe aus:
Wechseln Sie im Azure-Portal zu Ihrer sql-verwalteten Instanz.
Wählen Sie unter "Einstellungen" die Option "Verteilte Transaktionskoordinator" und dann die Registerkarte " Netzwerk " aus.
Wählen Sie unterDNS-Konfiguration die Option Neues externes DNS-Suffix aus. Geben Sie das DNS-Suffix für Ihre externe Umgebung ein, z. B.
dnszone1.com.Kopieren Sie den Wert für das DTC-Host-DNS-Suffix. Verwenden Sie dann den PowerShell-Befehl
Set-DnsClientGlobalSetting -SuffixSearchList $listin Ihrer externen Umgebung, um das DTC-Host-DNS-Suffix festzulegen. Wenn Ihr Suffix beispielsweiseabc1111111.database.windows.netlautet, definieren Sie den Parameter$list, um die vorhandenen DNS-Einstellungen abzurufen. Fügen Sie dann Ihr Suffix an, wie im folgenden Beispiel gezeigt:$list = (Get-DnsClientGlobalSetting).SuffixSearchList + "abc1111111.database.windows.net" Set-DnsClientGlobalSetting -SuffixSearchList $list
Netzwerkkonnektivität testen
Führen Sie nach dem Konfigurieren von Netzwerk und DNS Test-NetConnection (TNC) zwischen den DTC-Endpunkten Ihrer verwalteten SQL-Instanz und dem externen DTC-Host aus.
Bevor Sie die Verbindung testen, aktualisieren Sie zuerst die benutzerseitig konfigurierbaren Werte. Verwenden Sie dann das folgende PowerShell-Skript in der externen Umgebung, um den vollqualifizierten Domänennamen (FQDN) der SQL-Hostinstanz des DTC-Hosts zu identifizieren. Hier sehen Sie ein Beispiel:
# ===============================================================
# 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
# ===============================================================
Die JSON-Ausgabe sieht wie der folgende Beispiel-FQDN aus:
chn000000000000.zcn111111111.database.windows.net
Hierbei gilt:
-
chn000000000000ist der NetBIOS-Name des SQL Managed Instance DTC-Hosts. -
zcn111111111.database.windows.netist das DNS-Suffix.
Führen Sie als Nächstes einen TNC sowohl für den FQDN als auch für den NetBIOS-Namen des DTC-Hosts der SQL-verwalteten Instanz an Port 135 aus. Im folgenden Beispiel überprüft der erste Eintrag die Netzwerkkonnektivität. Der zweite Eintrag überprüft, ob die DNS-Einstellungen richtig sind.
tnc chn000000000000.zcn111111111.database.windows.net -Port 135
tnc chn000000000000 -Port 135
Wenn Konnektivität und DNS-Suffixe ordnungsgemäß konfiguriert sind, wird die Ausgabe TcpTestSucceeded : True angezeigt.
Erstellen Sie auf der Seite der verwalteten SQL-Instanz einen SQL-Agent-Auftrag, um den TNC PowerShell-Befehl auszuführen, um die Konnektivität mit Ihrem externen Host zu testen.
Wenn der FQDN für Ihren externen Host beispielsweise host10.dnszone1.com lautet, führen Sie den folgenden Test über Ihren SQL-Agent-Auftrag aus:
tnc host10.dnszone1.com -Port 135
tnc host10 -Port 135
Einschränkungen
Beachten Sie die folgenden Einschränkungen bei der Verwendung von DTC mit SQL Managed Instance:
- Das Ausführen verteilter T-SQL-Transaktionen zwischen sql Managed Instance und einem Drittanbieter-RDBMS wird nicht unterstützt. Die verwaltete SQL-Instanz unterstützt keine verknüpften Server mit RDBMS von Drittanbietern. Umgekehrt wird das Ausführen von verteilten T-SQL-Transaktionen zwischen sql-verwalteten Instanzen und SQL Server und anderen SQL Server-basierten Produkten unterstützt.
- Hostnamen in externen Umgebungen dürfen nicht länger als 15 Zeichen sein.
- Verteilte Transaktionen in Azure SQL-Datenbank werden mit dem DTC nicht unterstützt.
- Für die Authentifizierung unterstützt DTC nur die Option Keine Authentifizierung. Die Optionen für die gegenseitige Authentifizierung und die Authentifizierung eingehender Anrufer sind nicht verfügbar. Da DTC nur Synchronisierungsnachrichten und keine Benutzerdaten austauscht und nur mit dem virtuellen Netzwerk kommuniziert, ist diese Einschränkung kein Sicherheitsrisiko.
Verwalten von Transaktionen
Informationen zum Anzeigen von Statistiken verteilter Transaktionen finden Sie unter sys.dm_tran_distributed_transaction_stats.
Sie können das DTC-Protokoll mit der gespeicherten Prozedur sp_reset_dtc_log zurücksetzen.
Verteilte Transaktionen können mit der gespeicherten Prozedur sys.sp_manage_distributed_transaction verwaltet werden.