Freigeben über


Problembehandlung bei der Verbindung mit dem Datenverarbeitungsdienst und Telemetrieendpunkten

Gilt für:SQL Server

Zusätzlich zu den üblichen Endpunkten stellt die Azure Arc-Erweiterung für SQL Server stellt 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 Konnektivität|Verbindung für diese Endpunkte ist daher nur unidirektional.

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.

Fehlerfreier Status:

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

Fehlerhafter Status:

Screenshot des Portals für die Azure-Erweiterung für SQL Server in einem fehlerhaften 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. Wenn es 0 angezeigt wird, 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

Das Erweiterungsprotokoll ist unter:

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

Der Name der Protokolldatei hängt von der Azure-Version 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

Ein möglicher Antwortstatuscode ist:

StatusCode        : 200

StatusDescription : OK

Dieser sollte eine 200 zurückgeben, da es eine nicht authentifizierte Route gibt.

Probekonnektivität mit allen Regionen

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

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

Endpunktverweis

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

Zusätzlicher Hintergrund

Ab dem 12. März 2024 verwendet die Azure-Erweiterung für SQL Server die folgenden Endpunkte:

  • DPS: dataprocessingservice.<region>.arcdataservices.com
  • 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 ohne Leerzeichen und alle Kleinbuchstaben abgeleitet.

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, können ältere Endpunkte verwendet werden. 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 von Azure Resource Graph für Telemetrieuploadstatistiken

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

SQL-Erweiterungen finden, die seit langem nicht mehr mit DPS verbunden sind

Fragen Sie Azure Resource Graph ab, um Erweiterungen zu finden, die nicht kürzlich DPS verbunden worden 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.

DPS-Uploadstatuswert 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 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. Dieser Zustand kann vorkommen, wenn der Azure Connected Machine-Agent mit einer Azure-Region bereitgestellt und 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.

Möglicherwiese wird der DNS-Resolver-Cache für Ihren Computer nicht aktualisiert. Zur Aktualisierung gehen Sie wie folgt vor:
- Führen Sie unter Windows Folgendes aus: ipconfig /flushdns
– Führen Sie unter Linux (bei Verwendung von systemd) Folgendes aus: sudo resolvectl flush-caches
Conflict 409 Wahrscheinliche Ursache: temporärer Fehler innerhalb des DPS. Wenn der Fehler nicht von selbst behoben wird, erstellen Sie über das Azure-Portal einen Supportfall beim Microsoft-Support.
InternalServerError 500 Dies ist ein Fehler, der innerhalb des DPS auftritt. Erstellen Sie über das Azure-Portal einen Supportfall beim Microsoft-Support.