Empfohlene Voraussetzungen und Prüfliste für die Problembehandlung SQL Server Konnektivitätsprobleme

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 intermittierend (nur manchmal) oder konsistent ist (tritt ständig auf).

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

  • Wenn die Verbindungen in einer Anwendung 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 für andere Fehlermeldungen und Ausnahmen.

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

    1. Laden Sie die neueste Version von SQLCheck aus dem Microsoft SQL Networking GitHub-Repository herunter.

    2. Entzippen 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. Zum Beispiel: SQLCHECK > C:\Temp\server01.SQLCHECK.TXT.

    Hinweis

    Wenn Sie Verbindungsprobleme von einem Remoteclient oder verknüpfte Serverabfragen behandeln, führen Sie das SQLCheck-Tool auf allen beteiligten Systemen aus.

Schnelle Checkliste für die Problembehandlung bei Konnektivitätsproblemen

Hinweis

In den folgenden Abschnitten können Sie schnell nach Verbindungsproblemen suchen. Lesen Sie die einzelnen Themen, um detaillierte Schritte zur Problembehandlung zu erfahren.

Option 1

Wenn Sie Zugriff auf die Ausgabe des SQLCheck-Tools haben, das im Abschnitt "Empfohlene Voraussetzungen" erwähnt wird, und Informationen in verschiedenen Abschnitten in 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. Suchen Sie online nach neuen Treibern. Verschiedene Verbindungsfehler
Clientsicherheit und Treiberinformationen Diffie-Hellman Verschlüsselungssammlungen sind aktiviert. Mögliches Risiko zeitweiliger TLS-Fehler, wenn die Algorithmusversion zwischen Clients und Servern unterschiedlich ist Wenn Zeitweilige Verbindungsprobleme auftreten, finden Sie unter Anwendungen beim Herstellen einer Verbindung mit SQL Servern in Windows zwangsweise geschlossene TLS-Verbindungsfehler. Schließung einer bestehenden Verbindung wurde vom Remotehost erzwungen
Clientsicherheit 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 Beim Herstellen einer Verbindung mit einer benannten Instanz Probleme auftreten, stellen Sie sicher, dass SQL Server Browserdienst gestartet wird, oder starten Sie den Browserdienst neu. Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server
SQL Server Informationen Eigenschaften des Domänendienstkontos Wenn Sie verknüpfte Server von Ihrem SQL Server konfigurieren und der Wert "Vertrauensstellung für Del" auf "false" festgelegt ist, treten möglicherweise Authentifizierungsprobleme mit ihren verknüpften Serverabfragen auf. Problembehandlung bei Fehlern bei "Anmeldung für Benutzer fehlgeschlagen"
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 beheben Sie alle identifizierten Probleme. Der SSPI-Kontext kann nicht erstellt werden
SQL Server Informationen Details für SQL Server Instanz Überprüfen Sie die Werte von TCP Enabled, TCP Ports usw. Überprüfen Sie, ob TCP/IP serverseitig aktiviert ist und ob Ihre SQL Standardinstanz 1433 oder einen anderen Port überwacht. Verschiedene Verbindungsfehler

Option 2

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

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

    SQL Server ist jetzt für Clientverbindungen bereit. Dies ist eine Informationsnachricht; 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 bestimmten Zeichenfolge "SQL Server ist jetzt für Clientverbindungen bereit. 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, ob Anomalien auftreten: ping -a <SQL Server machine>, ping -a <SQL Server IP address>. Wenn Sie Probleme feststellen, arbeiten Sie mit Ihrem Netzwerkadministrator zusammen. Alternativ können Sie in PowerShell Folgendes verwenden Test-NetConnection :

    $servername = "DestinationServer"
    Test-NetConnection -ComputerName $servername
    
  3. Überprüfen Sie, ob SQL Server auf geeignete Protokolle 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 zu erstellen und zu starten (gespeichert im Ordner %TEMP% ):

    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 aus anderen Clientsystemen und verschiedenen Benutzeranmeldungen herstellen können. Wenn Dies möglich ist, 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 eine Anmeldung (Serverprinzipal) vorhanden ist und über CONNECT SQL Berechtigungen zum SQL Server verfügt. Stellen Sie außerdem sicher, dass die Standarddatenbank, die der Anmeldung zugewiesen ist, korrekt 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 Server Permissions. 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 Probleme im Zusammenhang mit Kerberos beheben, können Sie mithilfe der Skripts unter "Ermitteln, ob ich mit SQL Server verbunden bin" mithilfe der Kerberos-Authentifizierung ermitteln, ob Kerberos auf Ihren SQL Servern ordnungsgemäß konfiguriert ist.

Häufige Konnektivitätsprobleme

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