Freigeben über


Fehlerbehebung bei der Verbindung zum Datenverarbeitungsdienst und zu Telemetrieendpunkten

Gilt für:SQL Server

Zusätzlich zu den üblichen Endpunkten stellt die Azure Arc-Erweiterung für SQL Server eine Verbindung mit zwei anderen Endpunkten her.

  • Data Processing Service (DPS)-Endpunkt

    Die gesammelten Bestandsinformationen zu SQL Server-Instanzen, Datenbanken, Verfügbarkeitsgruppen und Nutzungsdaten für Abrechnungszwecke werden an diesen Endpunkt gesendet.

  • Telemetrieendpunkt

    Die Azure Connected Machine Agent-Protokolle, die Azure-Erweiterung für SQL Server-Protokolle und die DMV-Daten (Dynamic Management Views) werden an diesen Endpunkt gesendet.

Die Kommunikation mit diesen Endpunkten verwendet HTTPS mit SSL/TLS und Port TCP/443 für verschlüsselte sichere Verbindungen. Der Agent initiiert die Kommunikation, um die Daten an Azure zu senden. Die Kommunikation wird nie von Azure initiiert. Die Verbindung für diese Endpunkte ist daher nur in eine Richtung.

Wenn die Kommunikation mit diesen Endpunkten blockiert wird, hat der Dienst die folgenden Symptome:

Aktueller Status der Azure-Erweiterung

Sie können den aktuellen Status der Azure-Erweiterung für SQL Server im Portal anzeigen. Der Status wird alle 15 Minuten aktualisiert.

Gesunder Zustand

Screenshot des Portals für die Azure-Erweiterung für SQL Server in einem fehlerfreien Zustand.

Fehlerhafter Status:

Screenshot des Portals für Azure-Erweiterung für SQL Server in fehlerhaftem Zustand.

Überprüfen Sie, ob beim Herstellen einer Verbindung mit den DPS- oder Telemetrieendpunkten ein Problem auftritt.

Es gibt zwei Möglichkeiten, zu überprüfen, ob Konnektivitätsprobleme mit den DPS- oder Telemetrieendpunkten auftreten.

Überprüfen Sie die Azure-Erweiterung für den SQL Server-Status im im Azure-Portal

Wenn sie mit Azure verbunden ist, meldet die Azure-Erweiterung für SQL Server in der Regel ihren Status im Azure-Portal.

  • Navigieren Sie zur Ansicht Computer – Azure Arc im Azure-Portal, und suchen Sie den Computer anhand des Namens, und wählen Sie ihn aus.
  • Wählen Sie Erweiterungen.
  • Wählen Sie WindowsAgent.SqlServer oder LinuxAgent.SqlServer aus, um die Details anzuzeigen.
  • Sehen Sie sich die Statusmeldung und den uploadStatus-Wert an. Wenn etwas Anderes als OK angezeigt wird, besteht ein Problem beim Herstellen einer Verbindung mit dem DPS. Ist dies der Fehler 0, ist es wahrscheinlich, dass eine Firewall die Kommunikation mit dem DPS-Endpunkt blockiert. Möglicherweise werden weitere Details in der Statusmeldung oder dem uploadStatus-Fehlercode angezeigt, die Einblicke in das Konnektivitätsproblem liefern können.

Überprüfen Sie die Azure-Erweiterung für SQL Server-Protokolle

Die Protokolldatei der Erweiterung befindet sich unter:

C:\ProgramData\GuestConfig\extension_logs\Microsoft.AzureData.WindowsAgent.SqlServer\

Der Name der Protokolldatei hängt von der Version der Azure-Erweiterung für SQL Server ab. Für die neueste Version der Azure-Erweiterung für SQL Server ist die Protokolldatei:

unifiedagent.log

Für die Erweiterungsversion 1.1.24724.69 und frühere Versionen lautet die Protokolldatei:

ExtensionLog_0.log

Suchen Sie nach Protokolleinträgen, die ein Problem beim Herstellen einer Verbindung mit den DPS- oder Telemetrieendpunkten angeben.

Webserver-Endpunkte testen

Sie können verschiedene Tools verwenden, um die Webserverendpunkte für DPS und Telemetrie zu untersuchen. Zum Beispiel: Invoke-WebRequest oder curl.

Im folgenden Beispiel wird Invoke-Webrequest verwendet:

Invoke-WebRequest telemetry.<region>.arcdataservices.com

Ein möglicher Antwortstatuscode ist:

Invoke-WebRequest: Response status code does not indicate success: 401 (Unauthorized).

401 wird erwartet, da es keine nicht authentifizierte Route auf dem Telemetrieendpunkt gibt.

Für DPS:

Invoke-WebRequest dataprocessingservice.<region>.arcdataservices.com

Für US Government Virginia ersetzen Sie arcdataservices.com durch arcdataservices.azure.us. Dieses Beispiel wäre:

Invoke-WebRequest dataprocessingservice.<region>.arcdataservices.azure.us

Ein möglicher Antwortstatuscode ist:

StatusCode        : 200

StatusDescription : OK

200 wird erwartet, da es eine nicht authentifizierte Route gibt.

Testkonnektivität mit allen Regionen

Sie können die Konnektivität mit allen Regionen mit dem PowerShell-Skript test-connectivity.ps1 testen.

Anmerkung

Ersetzen Sie in der Region US Government Virginia arcdataservices.com durch arcdataservices.azure.us.

#This script repeatedly probes all regions for connectivity to the Azure Arc data services/Arc-enabled SQL Server endpoints for telemetry and the data processing service.
#The script will output the status of the connectivity to the console.
#The script will run indefinitely until stopped by the user.
#The script will iterate through all regions in the $regions array.
#The list of regions are updated as of June 7,2024 to reflect all publicly available, supported Azure regions for Arc-enabled SQL Server.

$regions = @(
    "East US",
    "East US 2",
    "West US 2",
    "West US 3",
    "Central US",
    "North Central US",
    "South Central US",
    "West Central US",
    "Canada Central",
    "Canada East",
    "UK South",
    "UK West",
    "France Central",
    "West Europe",
    "North Europe",
    "Switzerland North",
    "Central India",
    "Brazil South",
    "South Africa North",
    "UAE North",
    "Japan East",
    "Korea Central",
    "Southeast Asia",
    "Australia East",
    "Sweden Central",
    "Norway East"
)

$regions = $regions | ForEach-Object { $_.Replace(" ", "") }

do{
    $regions | ForEach-Object {
        $dps_url =  "dataprocessingservice.$_.arcdataservices.com"
        $ti_url =  "telemetry.$_.arcdataservices.com"
        try{
            $dps_response_time = Measure-Command { $response = Invoke-WebRequest -Uri $dps_url -Method Get }
            $dps_result = ($response).StatusCode
        }catch{
            $dps_result = $_.Exception.Message
        }
        try{
            $ti_response_time = Measure-Command { $response = Invoke-WebRequest -Uri $ti_url -Method Get -SkipHttpErrorCheck }
        }catch{
            if($_.Exception.Message -like "*401*"){
                $ti_result = "Expected"
            }
            else {
                $ti_result = $_.Exception.Message
            }
        }
        if ($ti_response_time.TotalSeconds -gt 3 -or $dps_response_time.TotalSeconds -gt 3 -or $dps_result -ne 200 -or $ti_result -ne "Expected") {
            Write-Host $dps_result "($dps_response_time) " $ti_result " ($ti_response_time) :: $_" -ForegroundColor Red
        }
        elseif ($ti_response_time.TotalSeconds -gt 1 -or $dps_response_time.TotalSeconds -gt 1) {
            Write-Host $dps_result "($dps_response_time) " $ti_result " ($ti_response_time) :: $_" -ForegroundColor Yellow
        }
        else
        {
            Write-Host $dps_result "($dps_response_time) " $ti_result " ($ti_response_time) :: $_"
        }
    }
    Write-Host "====================================================================="
} while($true)

Überprüfen der TLS-Versionskompatibilität

Der Endpunkt des Datenverarbeitungsdiensts unterstützt die folgenden TLS-Versionen: TLS 1.2 und 1.3. Windows Server 2012 und ältere Versionen werden nicht unterstützt.

Für Telemetrieendpunkte werden Windows Server 2012 R2 und älter nicht unterstützt.

Wenn eine nicht unterstützte TLS-Version verwendet wird, wird möglicherweise ein Fehler im Protokoll angezeigt.

<date time>|ERROR|SqlServerExtension.Service|Request failed with exception 'System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.

---> System.Security.Authentication.AuthenticationException: Authentication failed because the remote party sent a TLS alert: 'HandshakeFailure'.

---> System.ComponentModel.Win32Exception (0x80090326): The message received was unexpected or badly formatted.

Endpunktreferenz

Um eine Verbindung mit Azure herzustellen, verwenden die Endpunkte *.arcdataservices.com.

Zusätzlicher Hintergrund

Azure-Erweiterung für SQL Server verwendet die folgenden Endpunkte:

  • DPS: dataprocessingservice.<region>.arcdataservices.com, oder für die Region Virginia der US-Regierung *.<region>.arcdataservices.azure.us.
  • Telemetrie telemetry.<region>.arcdataservices.com

Ersetzen Sie <region> mit dem Kurznamen der Azure-Region, in der sich die Arc-Computerressource befindet. Der Kurzname wird aus dem Namen der Azure-Region abgeleitet, wobei Leerzeichen entfernt und alle Buchstaben kleingeschrieben werden.

Wenn sich Ihre Arc-Computerressource beispielsweise in USA, Osten 2 befindet, lautet der Kurzname der Region eastus2 und der Telemetrie-Endpunkte ist:

telemetry.eastus2.arcdataservices.com

Wenn Ihre Erweiterung älter als der 11. März 2024 ist, werden möglicherweise ältere Endpunkte verwendet. Aktualisieren Sie Ihre Erweiterung so, dass sie den aktuellen Endpunkt verwendet.

Anmerkung

Die Endpunktwerte vor *.arcdataservices.com können sich ändern.

Verwenden eines HTTPS-Proxyservers für ausgehende Verbindungen

Wenn Ihr Netzwerk einen HTTPS-Proxyserver für ausgehende Konnektivität benötigt, können Sie weitere Informationen zum Konfigurieren der Proxyeinstellungen unter Aktualisieren oder Entfernen von Proxyeinstellungen lesen.

Abfragen des Azure Resource Graph nach Telemetrie-Upload-Statistiken

Verwenden Sie Azure Resource Graph, um den Uploadstatus für Ihre Umgebung abzufragen.

resources
    | where type =~ 'microsoft.hybridcompute/machines/extensions'
    | where properties.type in ('WindowsAgent.SqlServer','LinuxAgent.SqlServer')
    | parse id with * '/providers/Microsoft.HybridCompute/machines/' machineName '/extensions/' *
    | parse properties with * 'uploadStatus : ' uploadStatus ';' *
    | project uploadStatus, subscriptionId, resourceGroup, machineName
    | where uploadStatus !in ('OK') //comment this out to see all upload stats
    | order by uploadStatus desc

Suchen Sie nach SQL-Erweiterungen, die seit langem nicht mehr mit DPS verbunden sind.

Fragen Sie Azure Resource Graph ab, um Erweiterungen zu finden, die kürzlich nicht mit DPS verbunden sind.

resources
    | where type =~ 'microsoft.hybridcompute/machines/extensions'
    | where properties.type in ('WindowsAgent.SqlServer','LinuxAgent.SqlServer')
    | parse id with * '/providers/Microsoft.HybridCompute/machines/' machineName '/extensions/' *
    | parse properties with * 'timestampUTC : ' timestampUTC ';' *
    | project timestampUTC, subscriptionId, resourceGroup, machineName
    | order by timestampUTC desc

Fehlercodes

Die folgende Tabelle enthält einige gängige Werte für den DPS-Uploadstatus und Informationen zur weiteren Problembehandlung.

Statuswert des DPS-Upload HTTP-Fehlercode Vorschläge für die Problembehandlung
0 Wahrscheinliche Ursache: Eine Firewall blockiert die Übertragung der Daten zum DPS. Öffnen Sie die Firewall zum DNS-Endpunkt für das DPS (TCP, Port: 443).
OK 200 Die Verbindung funktioniert wie erwartet.
Bad request 400 Mögliche Ursache: Der Ressourcenname (Name der SQL Server-Instanz oder -Datenbank) entspricht nicht den Namenskonventionen für Azure-Ressourcen. Wenn der Datenbankname beispielsweise ein reserviertes Wort ist.
Unauthorized 401 Wahrscheinliche Ursache: Die Erweiterung ist so konfiguriert, dass Daten über einen HTTP-Proxy gesendet werden, der eine Authentifizierung erfordert. Die Verwendung eines HTTP-Proxys, der eine Authentifizierung erfordert, wird derzeit nicht unterstützt. Verwenden Sie einen nicht authentifizierten HTTP-Proxy oder keinen Proxy.
Forbidden 403 Überprüfen Sie, ob der Microsoft.AzureArcData Ressourcenanbieter im Abonnement registriert ist. Wenn der Azure Connected Machine-Agent ansonsten erwartungsgemäß funktioniert und dieser Fehler nach einem Neustart nicht von selbst behoben ist, erstellen Sie über das Azure-Portal einen Supportfall beim Microsoft-Support.
NotFound 404 Der Endpunkt, mit dem die Erweiterung eine Verbindung herzustellen versucht, existiert nicht.

Um zu überprüfen, mit welchem Endpunkt eine Verbindung hergestellt werden soll, durchsuchen Sie die Protokolle nach dataprocessingservice. Diese Bedingung kann auftreten, wenn der Azure Connected Machine-Agent bereitgestellt und mit einer Azure-Region verbunden wurde, in der der Microsoft.AzureArcData Ressourcenanbieter noch nicht verfügbar ist. Stellen Sie den Azure Connected Machine-Agent in einer Region erneut bereit, in der der Microsoft.AzureArcData-Ressourcenanbieter für den SQL Server mit Azure Arc-Unterstützung verfügbar ist. Weitere Informationen finden Sie auch unter Regionale Verfügbarkeit.
Es ist möglich, dass der DNS-Resolvercache für Ihren Computer nicht aktualisiert wird. Aktualisieren:
- Führen Sie unter Windows den folgenden Befehl aus: ipconfig /flushdns
- Führen Sie unter Linux (sofern systemd verwendet) Folgendes aus: sudo resolvectl flush-caches
Conflict 409 Wahrscheinliche Ursache: temporärer Fehler innerhalb des DPS. Wenn sich dies nicht selbst beheben lässt, erstellen Sie einen Supportfall mit dem Microsoft-Support über das Azure-Portal.
InternalServerError 500 Dies ist ein Fehler, der innerhalb des DPS auftritt. Erstellen Sie über das Azure-Portal einen Supportfall beim Microsoft-Support.