Megosztás a következőn keresztül:


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

A következőkre vonatkozik:Azure SQL Managed Instance

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. Ezek közé tartoznak a felügyelt SQL-példányok, az SQL Server-példányok, az egyéb relációsadatbázis-kezelő rendszerek (RDBMS), az egyéni alkalmazások és minden olyan környezetben üzemeltetett tranzakció résztvevői, amelyek hálózati kapcsolatot létesíthetnek az Azure-nal.

Lehetséges helyzetek

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. Az SQL Managed Instance DTC-je esetében a felügyelet részét leszámítva ugyanaz a DTC Windows-szolgáltatás van jelen, 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, többek között 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. Konfigurálja a DTC-t.
  2. Hálózati kapcsolat engedélyezése a résztvevők között.
  3. Konfigurálja a DNS-beállításokat.

Megjegyzés:

A csak felügyelt SQL-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ások módosításához írási engedélyekkel kell rendelkeznie az Microsoft.Sql/managedInstances/dtc erőforráshoz. A DTC-beállítások megtekintéséhez olvasási engedélyekkel kell rendelkeznie az Microsoft.Sql/managedInstances/dtc erőforráshoz.

A 135-ös portnak engedélyeznie kell a bejövő és a kimenő kommunikációt is, az 14000-15000-s porttartománynak engedélyeznie kell a bejövő forgalmat, a 49152-65535-ös portnak pedig engedélyeznie kell a kimenő kommunikációt mind a felügyelt SQL-példány virtuális hálózati biztonsági csoportjában , mind a külső környezetben beállított tűzfalon.

A DTC konfigurálása

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

A DTC Azure Portallal történő konfigurálásához kövesse az alábbi lépéseket:

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

  2. A Beállítások területen válassza az Elosztott tranzakció koordinátora lehetőséget.

    Képernyőkép, amely a kiemelt menüopciót, az SQL Managed Instance elosztott tranzakció-koordinátor paneljét és az Alapok lapot mutatja.

  3. Az Alapszintű beállítások lapon állítsa az Elosztott tranzakciós koordinátortengedé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 SQL-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 SQL-példány virtuális hálózatához kell csatlakoztatnia. Ebben a kontextusban a külső minden olyan objektumra vagy folyamatra hivatkozik, amely nem a felügyelt SQL-példány. 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 engedélyeznie kell a bejövő és a kimenő kommunikációt is, az 14000-15000-s porttartománynak engedélyeznie kell a bejövő forgalmat, a 49152-65535-ös portnak pedig engedélyeznie kell a kimenő kommunikációt mind a felügyelt SQL-példány virtuális hálózati biztonsági csoportjában , mind 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 az Azure-hálózatkezelés nem támogatja a NetBIOS protokollt, és a NetBIOS-nevek nem oldhatók fel vegyes környezetekben, a felügyelt SQL-példányok DTC-je a DNS-névkiszolgálókra támaszkodik a gazdagépnév-feloldáshoz. A SQL-felügyelt példányok DTC-gazdagépei automatikusan regisztrálva vannak az Azure DNS-kiszolgálón. Külső DTC-gazdagépeket regisztrálnia kell egy DNS-kiszolgálón. A felügyelt SQL-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, amely bemutatja a névfeloldást vegyes környezetekben a DTC használatakor.

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 SQL-példányt.

  2. A Beállítások területen válassza az Elosztott tranzakció koordinátora lehetőséget, majd a Hálózatkezelés lapot.

    Képernyőkép a felügyelt SQL-példány DTC paneljének Hálózatkezelés lapjáról az Azure Portalon, kiemelve az Új külső DNS-utótagot.

  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ő számítási környezetben a PowerShell parancs Set-DnsClientGlobalSetting -SuffixSearchList $list segítségével állítsa be a DTC-gazdagép DNS-utótagját. Például, ha a szóvége abc1111111.database.windows.net, adja meg a $list paramétert 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 aTest-NetConnection (TNC) parancsot a felügyelt SQL-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-gazda SQL-példány teljes tartománynevének (FQDN) azonosításához. Íme egy példa:

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

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

chn000000000000.zcn111111111.database.windows.net

Where:

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

Ezután futtasson egy TNC-t a 135-ös porton felügyelt SQL-példány DTC-gazdagépének teljes tartományneve és NetBIOS-neve között. 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 SQL-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

Korlátozások

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-sel rendelkező csatolt kiszolgálókat. Ezzel szemben támogatott az elosztott T-SQL-tranzakciók futtatása a felügyelt SQL-példányok és az SQL Server és más SQL Server-alapú termékek között.
  • A külső környezetekben a gazdagépnevek 15 karakternél nem lehetnek hosszabbak.
  • 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és