Elosztott tranzakciókoordinátor (DTC) felügyelt Azure SQL-példányhoz

A következőre vonatkozik: Felügyelt Azure SQL-példány

Ez a cikk áttekintést nyújt a felügyelt Azure SQL-példány elosztott tranzakciós koordinátoráról (DTC). A DTC használatával elosztott tranzakciókat futtathat vegyes környezetekben, többek között felügyelt példányokon, SQL Server-példányokon, más relációsadatbázis-kezelő rendszereken (RDBMS-ek), egyéni alkalmazásokon és egyéb tranzakció résztvevőin, amelyek bármely olyan környezetben futnak, amely hálózati kapcsolatot létesíthet az Azure-ral.

Megjegyzés:

A felügyelt Azure SQL-példányhoz készült DTC a 2022. novemberi funkcióhullám része. A funkcióhullám bevezetésének ütemtervéről további információt a 2022. novemberi funkcióhullámban talál.

Forgatókönyvek

Engedélyezheti a felügyelt Azure SQL-példány DTC-nek, hogy elosztott tranzakciókat futtasson több környezetben, amelyek hálózati kapcsolatot létesíthetnek az Azure-ral. A felügyelt SQL-példány DTC-jének kezelése azt jelenti, hogy az Azure gondoskodik a felügyeletről és a karbantartásról, például a naplózásról, a tárolásról, a DTC rendelkezésre állásáról és a hálózatkezelésről. A felügyelt szemponton kívül a felügyelt SQL-példány DTC-je ugyanaz a DTC Windows-szolgáltatás , amely támogatja az SQL Server hagyományos elosztott tranzakcióit.

A felügyelt SQL-példányhoz készült DTC számos technológiát és forgatókönyvet old fel, beleértve az XA, a .NET, a T-SQL, a COM+, az ODBC és a JDBC használatát.

Elosztott tranzakciók futtatásához hajtsa végre az alábbi feladatokat:

  1. Configure DTC.
  2. Enable network connectivity between participants.
  3. Configure DNS settings.

Megjegyzés:

A csak felügyelt példányok által üzemeltetett adatbázisok közötti T-SQL- vagy .NET-elosztott tranzakciók esetében javasoljuk, hogy natív támogatást használjon az elosztott tranzakciókhoz.

Requirements

A DTC beállításainak módosításához írási engedélyekkel kell rendelkeznie az erőforráshoz Microsoft.Sql/managedInstances/dtc . A DTC-beállítások megtekintéséhez olvasási engedélyekkel kell rendelkeznie az erőforráshoz Microsoft.Sql/managedInstances/dtc .


DTC konfigurálása

A DTC-t az Azure Portal, az Azure PowerShell és a CLI használatával konfigurálhatja.

A DTC konfigurálása az Azure Portal használatával:

  1. Az Azure Portalon nyissa meg a felügyelt példányt.

  2. A Gépház alatti bal oldali menüben válassza az Elosztott tranzakció koordinátora lehetőséget.

    Screenshot that shows the highlighted menu option, the Distributed Transaction Coordinator pane for SQL Managed Instance, and the Basics tab.

  3. Az Alapszintű beállítások lapon állítsa az Elosztott tranzakciós koordinátort engedélyezve értékre.

  4. A Biztonság lapon engedélyezze a bejövő vagy kimenő tranzakciókat, és engedélyezze az XA-t vagy az SNA LU-t.

  5. A Hálózatkezelés lapon adja meg a DTC DNS-t, és kérje le a külső DNS és hálózat konfigurálásához szükséges információkat.

Hálózati kapcsolat

A DTC használatához minden tranzakció résztvevőjének hálózati kapcsolattal kell rendelkeznie az Azure-ral. Mivel a felügyelt példányok mindig egy dedikált azure-beli virtuális hálózaton vannak üzembe helyezve, a külső környezetet a felügyelt példány virtuális hálózatához kell csatlakoztatnia. Ebben a kontextusban a külső olyan objektumra vagy folyamatra hivatkozik, amely nem az Ön felügyelt példánya. Ha a külső erőforrás az Azure-ban is használ virtuális hálózatot, használhatja a virtuális hálózatok közötti társviszony-létesítést. Ellenkező esetben hozzon létre kapcsolatot az előnyben részesített módszerrel, például pont–hely VPN, Azure ExpressRoute vagy más, az üzleti igényeknek megfelelő hálózati kapcsolati technológia használatával.

A 135-ös portnak és az 1024-65535-ös portnak engedélyeznie kell a bejövő és kimenő kommunikációt a felügyelt példány virtuális hálózati biztonsági csoportjában és a külső környezetben beállított tűzfalon.

DNS-beállítások

A DTC a tranzakció résztvevőinek NetBIOS-nevére támaszkodik a kölcsönös kommunikációhoz. Mivel a NetBIOS protokollt nem támogatja az Azure hálózatkezelése, és a NetBIOS-nevek nem oldhatók fel vegyes környezetekben, a felügyelt példányok DTC-je a DNS-névkiszolgálókra támaszkodik a gazdagépnév-feloldáshoz. A felügyelt példányok DTC-gazdagépei automatikusan regisztrálva lesznek az Azure DNS-kiszolgálón. Külső DTC-gazdagépeket regisztrálnia kell egy DNS-kiszolgálón. A felügyelt példánynak és a külső környezetnek DNS-utótagokat is cserélnie kell.

Az alábbi ábrán a névfeloldás vegyes környezetekben látható:

Diagram that shows name resolution across mixed environments when you use DTC.

Megjegyzés:

Nem kell konfigurálnia a DNS-beállításokat, ha csak XA-tranzakciókhoz szeretné használni a DTC-t.

DNS-utótagok cseréje:

  1. Az Azure Portalon nyissa meg a felügyelt példányt.

  2. A Gépház alatti bal oldali menüben válassza az Elosztott tranzakció koordinátora lehetőséget. Válassza a Hálózatkezelés lapot.

    Screenshot that shows the Networking tab of the DTC pane for your managed instance in the Azure portal, with New external DNS suffix highlighted.

  3. A DNS-konfigurációban válassza az Új külső DNS-utótagot. Adja meg a külső környezet DNS-utótagját, például dnszone1.com.

  4. Másolja ki a DTC-gazdagép DNS-utótagjának értékét. Ezután a külső környezet PowerShell-parancsával Set-DnsClientGlobalSetting -SuffixSearchList $list állítsa be a DTC-gazdagép DNS-utótagját. Ha például az utótagja, abc1111111.database.windows.netadja meg a paramétert $list a meglévő DNS-beállítások lekéréséhez. Ezután fűzze hozzá az utótagot az alábbi példában látható módon:

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

Hálózati kapcsolat tesztelése

A hálózatkezelés és a DNS konfigurálása után futtassa a Test-Net Csatlakozás ion (TNC) parancsot a felügyelt példány DTC-végpontjai és a külső DTC-gazdagép között.

A kapcsolat teszteléséhez először frissítse a felhasználó által konfigurálható értékeket. Ezután használja a következő PowerShell-szkriptet a külső környezetben a felügyelt DTC-gazdagéppéldány teljes tartománynevének (FQDN) azonosításához. Here's an example:

# =============================================================== 
# 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 
# =============================================================== 

A JSON-kimenet a következő FQDN-példához hasonlít:

chn000000000000.zcn111111111.database.windows.net

Hol:

  • chn000000000000 A felügyelt példány DTC-gazdagépének NetBIOS-neve.
  • zcn111111111.database.windows.net a DNS-utótag.

Ezután futtasson egy TNC-t a felügyelt példány DTC-gazdagépének teljes tartományneve és NetBIOS-neve között a 135-ös porton. Az alábbi példában az első bejegyzés ellenőrzi a hálózati kapcsolatot. A második bejegyzés ellenőrzi, hogy a DNS-beállítások helyesek-e.

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

Ha a kapcsolat és a DNS-utótagok megfelelően vannak konfigurálva, megjelenik a TcpTestSucceeded : True kimenet.

A felügyelt példány oldalán hozzon létre egy SQL Agent-feladatot a TNC PowerShell-parancs futtatásához a külső gazdagéphez való kapcsolódás teszteléséhez.

Ha például a külső gazdagép teljes tartományneve az host10.dnszone1.com, futtassa a következő tesztet az SQL Agent-feladaton keresztül:

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

Limitations

Vegye figyelembe a következő korlátozásokat, amikor felügyelt SQL-példányokkal használja a DTC-t:

  • A felügyelt SQL-példány és egy külső RDBMS között elosztott T-SQL-tranzakciók futtatása nem támogatott. A felügyelt SQL-példány nem támogatja a külső RDBMS-ekkel rendelkező csatolt kiszolgálókat. Ezzel szemben támogatott az elosztott T-SQL-tranzakciók futtatása a felügyelt példányok és az SQL Server és más SQL Server-alapú termékek között.
  • A külső környezet gazdagépnevei nem lehetnek hosszabbak 15 karakternél.
  • A DTC nem támogatja az Azure SQL Database-be történő elosztott tranzakciókat.
  • A hitelesítéshez a DTC csak a nincs hitelesítési lehetőséget támogatja. A kölcsönös hitelesítés és a bejövő hívó hitelesítési beállításai nem érhetők el. Mivel a DTC csak szinkronizálási üzeneteket cserél, felhasználói adatokat nem, és mivel kizárólag a virtuális hálózattal kommunikál, ez a korlátozás nem jelent biztonsági kockázatot.

Tranzakciók kezelése

Az elosztott tranzakciók statisztikáinak megtekintéséhez tekintse meg a sys.dm_tran_distributed_transaction_stats.

A DTC-naplót visszaállíthatja a sp_reset_dtc_log tárolt eljárással.

Az elosztott tranzakciók a sys.sp_manage_distributed_transaction tárolt eljárással kezelhetők.

Következő lépések

A natív felügyelt példányok elosztott tranzakciótámogatását lásd : Rugalmas tranzakciók.