Empfohlene Voraussetzungen und Prüfliste für die Behandlung von SQL Server Konnektivitätsproblemen

Gilt für: SQL Server
Ursprüngliche KB-Nummer: 4009936

Um Konnektivitätsprobleme effektiv zu beheben, sammeln Sie die folgenden Informationen:

  • Der Text der Fehlermeldung und die Fehlercodes. Überprüfen Sie, ob der Fehler zeitweilig (tritt nur gelegentlich auf) oder konsistent (tritt ständig auf).

  • Anwendungs- und Systemereignisprotokolle von SQL Server- und Clientsystemen. Mithilfe dieser Protokolle können Sie überprüfen, ob systemweite Probleme auf Ihrem SQL Server auftreten.

  • Wenn die Verbindungen von einer Anwendung aus fehlschlagen, sammeln Sie die Verbindungszeichenfolgen aus der Anwendung. Diese Zeichenfolgen befinden sich in der Regel in Web.config-Dateien für ASP.NET Anwendungen.

  • Sammeln und überprüfen Sie SQL Server Fehlerprotokolle auf andere Fehlermeldungen und Ausnahmen.

  • Wenn Sie Administratorzugriff auf den SQL Server Computer haben, erfassen und überprüfen Sie die aktuellen Computereinstellungen und Dienstkonten mithilfe des folgenden Verfahrens:

    1. Laden Sie die neueste Version von SQLCheck aus dem GitHub-Repository für Microsoft SQL-Netzwerke herunter.

    2. Entpacken Sie die heruntergeladene Datei in einen Ordner, z. B. C:\Temp.

    3. Führen Sie die Eingabeaufforderung als Administrator aus, um die Daten zu sammeln und in einer Datei zu speichern. Beispiel: SQLCHECK > C:\Temp\server01.SQLCHECK.TXT.

    Hinweis

    Wenn Sie Konnektivitätsprobleme von einem Remoteclient aus behandeln oder Verbindungsserverabfragen behandeln, führen Sie das Tool SQLCheck auf allen beteiligten Systemen aus.

Schnelle Checkliste zur Behandlung von Konnektivitätsproblemen

Hinweis

In den folgenden Abschnitten können Sie schnell nach Konnektivitätsproblemen suchen. Ausführliche Schritte zur Problembehandlung finden Sie in den einzelnen Themen.

Option 1

Wenn Sie Zugriff auf die Ausgabe des SQLCheck-Tools haben, die im Abschnitt Empfohlene Voraussetzungen erwähnt wird und Informationen in verschiedenen Abschnitten der Ausgabedatei (Computer, Clientsicherheit und SQL Server) überprüfen, verwenden Sie die Informationen, um die Probleme zu beheben, die zu Ihrem Problem beitragen. Sehen Sie sich die folgenden Beispiele an:

Abschnitt in der Datei Text, nach dem gesucht werden soll Mögliche Aktion Kann bei der Problembehandlung helfen (Beispiele)
Computerinformationen Warnung: Der Netzwerktreiber ist möglicherweise veraltet. Überprüfen Sie online nach neuen Treibern. Verschiedene Konnektivitätsfehler
Clientsicherheits- und Treiberinformationen Diffie-Hellman Verschlüsselungssammlungen sind aktiviert. Mögliches Risiko zeitweiliger TLS-Fehler, wenn sich die Algorithmusversion zwischen Clients und Servern unterscheidet Wenn zeitweilige Konnektivitätsprobleme auftreten, finden Sie weitere Informationen unter Verwendung von Erzwungenem Schließen von TLS-Verbindungsfehlern bei Anwendungen beim Herstellen einer Verbindung mit SQL Server in Windows. Schließung einer bestehenden Verbindung wurde vom Remotehost erzwungen
Clientsicherheits- und Treiberinformationen SQL-Aliase Falls vorhanden, stellen Sie sicher, dass Aliase ordnungsgemäß konfiguriert sind und auf den richtigen Server und die richtigen IP-Adressen verweisen. Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server
SQL Server Informationen Dienstleistungen von Interesse Wenn Ihr SQL-Dienst nicht gestartet wurde, starten Sie ihn. Wenn Probleme beim Herstellen einer Verbindung mit einer benannten Instanz auftreten, stellen Sie sicher, dass SQL Server Browserdienst gestartet wird, oder versuchen Sie, den Browserdienst neu zu starten. Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server
SQL Server Informationen Domänendienstkontoeigenschaften Wenn Sie Verbindungsserver über Ihre SQL Server konfigurieren und der Wert Für Entf vertrauen auf false festgelegt ist, können Authentifizierungsprobleme bei Ihren Verbindungsserverabfragen auftreten. Problembehandlung bei Fehlern bei der Anmeldung für Den Benutzer
SQL Server Informationen SPN ist nicht vorhanden Überprüfen Sie diese Tabelle, um festzustellen, ob SPNs für Ihre SQL Server ordnungsgemäß konfiguriert sind, und um alle identifizierten Probleme zu beheben. Der SSPI-Kontext kann nicht erstellt werden
SQL Server Informationen Details zur SQL Server-Instanz Überprüfen Sie die Werte für TCP aktiviert, TCP-Ports usw. Überprüfen Sie, ob TCP/IP auf der Serverseite aktiviert ist und ob Ihre SQL-Standardinstanz an 1433 oder einem anderen Port lauscht. Verschiedene Konnektivitätsfehler

Option 2

Wenn Sie SQLCheck nicht auf Ihrem SQL Server Computer ausführen können, können Sie die folgenden Punkte überprüfen, bevor Sie eine ausführliche Problembehandlung durchführen:

  1. Stellen Sie sicher, dass SQL Server gestartet wurde und dass die folgende Meldung im SQL Server Fehlerprotokoll angezeigt wird:

    SQL Server ist jetzt für Clientverbindungen bereit. Dies ist eine Informationsmeldung; Es ist keine Benutzeraktion erforderlich.

    Verwenden Sie den folgenden Befehl in PowerShell, um den Status von SQL Server Diensten auf dem System zu überprüfen:

    Get-Service | Where {$_.status -eq 'running' -and $_.DisplayName -match "sql server*"}
    

    Verwenden Sie den folgenden Befehl, um die Fehlerprotokolldatei nach der spezifischen Zeichenfolge "SQL Server ist jetzt bereit für Clientverbindungen. Dies ist eine Informationsnachricht; es ist keine Benutzeraktion erforderlich.“:

    Get-ChildItem -Path "c:\program files\microsoft sql server\mssql*" -Recurse -Include Errorlog |select-string "SQL Server is now ready for client connections."
    
  2. Überprüfen Sie die grundlegende Konnektivität über die IP-Adresse, und überprüfen Sie auf Anomalien: ping -a <SQL Server machine>, ping -a <SQL Server IP address>. Wenn Probleme auftreten, wenden Sie sich an Ihren Netzwerkadministrator. Alternativ können Sie in PowerShell folgendes verwenden Test-NetConnection :

    $servername = "DestinationServer"
    Test-NetConnection -ComputerName $servername
    
  3. Überprüfen Sie, ob SQL Server an den entsprechenden Protokollen lauscht, indem Sie das Fehlerprotokoll überprüfen:

     Get-ChildItem -Path "c:\program files\microsoft sql server\mssql*" -Recurse -Include Errorlog |select-string "Server is listening on" , "ready to accept connection on" -AllMatches
    
  4. Überprüfen Sie, ob Sie mithilfe einer UDL-Datei eine Verbindung mit SQL Server herstellen können. Wenn dies funktioniert, liegt möglicherweise ein Problem mit der Verbindungszeichenfolge vor. Anweisungen zum UDL-Testverfahren finden Sie unter Testen der OLE DB-Konnektivität mit SQL Server mithilfe einer UDL-Datei. Alternativ können Sie das folgende Skript verwenden, um eine UDL-Test.udl-Datei (gespeichert im Ordner %TEMP% ) zu erstellen und zu starten:

    clear
    
    $ServerName = "(local)"
    $UDL_String = "[oledb]`r`n; Everything after this line is an OLE DB initstring`r`nProvider=MSOLEDBSQL.1;Integrated Security=SSPI;Persist Security Info=False;User ID=`"`";Initial Catalog=`"`";Data Source=" + $ServerName + ";Initial File Name=`"`";Server SPN=`"`";Authentication=`"`";Access Token=`"`""
    
    Set-Content -Path ($env:temp + "\UDL-Test.udl") -Value $UDL_String -Encoding Unicode
    
    #open the UDL
    Invoke-Expression ($env:temp + "\UDL-Test.udl")
    
  5. Überprüfen Sie, ob Sie eine Verbindung mit SQL Server von anderen Clientsystemen und unterschiedlichen Benutzeranmeldungen herstellen können. Wenn Sie in der Lage sind, kann das Problem spezifisch für den Client oder die Anmeldung sein, bei dem das Problem auftritt. Überprüfen Sie die Windows-Ereignisprotokolle auf dem problematischen Client auf weitere Zeiger. Überprüfen Sie außerdem, ob Netzwerktreiber auf dem neuesten Stand sind.

  6. Wenn Anmeldefehler auftreten, stellen Sie sicher, dass ein Anmeldename (Serverprinzipal) vorhanden ist und CONNECT SQL über Berechtigungen zum SQL Server verfügt. Stellen Sie außerdem sicher, dass die Standarddatenbank, die der Anmeldung zugewiesen ist, richtig ist und dass der zugeordnete Datenbankprinzipal über Berechtigungen für die Datenbank verfügt CONNECT . Weitere Informationen zum Erteilen CONNECT von Berechtigungen für den Datenbankprinzipal finden Sie unter GRANT-Datenbankberechtigungen. Weitere Informationen zum Erteilen CONNECT SQL von Berechtigungen für den Serverprinzipal finden Sie unter GRANT-Serverberechtigungen. Verwenden Sie das folgende Skript, um diese Berechtigungen zu identifizieren:

    clear
    ## replace these variables with the login, user, database and server 
    $server_principal = "CONTOSO\JaneK"  
    $database_principal = "JaneK"
    $database_name = "mydb"
    $server_name = "myserver"
    
    Write-Host "`n******* Server Principal (login) permissions *******`n`n"
    sqlcmd -E -S $server_name -Q ("set nocount on; SELECT convert(varchar(32),pr.type_desc) as login_type, convert(varchar(32), pr.name) as login_name, is_disabled,
      convert(varchar(32), isnull (pe.state_desc, 'No permission statements')) AS state_desc, 
      convert(varchar(32), isnull (pe.permission_name, 'No permission statements')) AS permission_name,
      convert(varchar(32), default_database_name) as default_db_name
      FROM sys.server_principals AS pr
      LEFT OUTER JOIN sys.server_permissions AS pe
        ON pr.principal_id = pe.grantee_principal_id
      WHERE is_fixed_role = 0 -- Remove for SQL Server 2008
      and name = '" + $server_principal + "'")
    
    Write-Host "`n******* Database Principal (user) permissions *******`n`n"
    sqlcmd -E -S $server_name -d $database_name -Q ("set nocount on; SELECT convert(varchar(32),pr.type_desc) as user_type, convert(varchar(32),pr.name) as user_name, 
      convert(varchar(32), isnull (pe.state_desc, 'No permission statements')) AS state_desc, 
      convert(varchar(32), isnull (pe.permission_name, 'No permission statements')) AS permission_name 
      FROM sys.database_principals AS pr
      LEFT OUTER JOIN sys.database_permissions AS pe
        ON pr.principal_id = pe.grantee_principal_id
      WHERE pr.is_fixed_role = 0
      and name = '" + $database_principal + "'")
    
    Write-Host "`n******* Server to Database Principal mapping ********`n"
    sqlcmd -E -S $server_name -d $database_name -Q ("exec sp_helplogins '" + $server_principal + "'")
    
  7. Wenn Sie Kerberos-bezogene Probleme beheben, können Sie die Skripts unter Ermitteln, ob ich mit SQL Server mithilfe der Kerberos-Authentifizierung ermitteln, ob Kerberos auf Ihren SQL-Servern ordnungsgemäß konfiguriert ist, verwenden.

Häufige Konnektivitätsprobleme

Wenn Sie die Voraussetzungen und die Prüfliste durchlaufen haben, sehen Sie sich häufige Konnektivitätsprobleme an , und wählen Sie die entsprechende Fehlermeldung aus, um ausführliche Schritte zur Problembehandlung zu erhalten.