Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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:
- Konfigurálja a DTC-t.
- Hálózati kapcsolat engedélyezése a résztvevők között.
- 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:
Az Azure Portalon nyissa meg a felügyelt SQL-példányt.
A Beállítások területen válassza az Elosztott tranzakció koordinátora lehetőséget.
Az Alapszintű beállítások lapon állítsa az Elosztott tranzakciós koordinátortengedélyezve értékre.
A Biztonság lapon engedélyezze a bejövő vagy kimenő tranzakciókat, és engedélyezze az XA-t vagy az SNA LU-t.
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ó:
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:
Az Azure Portalon nyissa meg a felügyelt SQL-példányt.
A Beállítások területen válassza az Elosztott tranzakció koordinátora lehetőséget, majd a Hálózatkezelés lapot.
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.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 $listsegítségével állítsa be a DTC-gazdagép DNS-utótagját. Például, ha a szóvégeabc1111111.database.windows.net, adja meg a$listparamé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:
-
chn000000000000a felügyelt SQL-példány DTC-gazdagépének NetBIOS-neve. -
zcn111111111.database.windows.neta 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.