Freigeben über


Empfohlene Voraussetzungen und Prüfliste für die Problembehandlung 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 der Fehlercodes. Überprüfen Sie, ob der Fehler intermittiert ist (tritt nur manchmal auf) oder konsistent (tritt immer auf).

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

  • Wenn die Verbindungen aus einer Anwendung fehlschlagen, sammeln Sie die Verbindungszeichenfolge aus der Anwendung. Diese Zeichenfolgen werden in der Regel in Web.config-Dateien für ASP.NET Anwendungen gefunden.

  • 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 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

    Notiz

    Wenn Sie Konnektivitätsprobleme von einem Remoteclient beheben oder verknüpfte Serverabfragen behandeln, führen Sie das SQLCHECK-Tool auf allen beteiligten Systemen aus.

Schnellcheckliste für die Problembehandlung von Konnektivitätsproblemen

Notiz

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

Option 1:

Wenn Sie Zugriff auf die Ausgabe des SQLCHECK-Tools haben, das im Abschnitt "Empfohlene Voraussetzungen" aufgeführt ist, und Informationen in verschiedenen Abschnitten in der Ausgabedatei (Computer, Client Security und SQL Server) überprüfen, verwenden Sie die Informationen, um die Probleme zu beheben, die zu Ihrem Problem beitragen. Hierzu folgende Beispiele:

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 Cipher Suites sind aktiviert. Mögliches Risiko von intermittierenden TLS-Fehlern, wenn die Algorithmusversion zwischen Clients und Servern unterschiedlich ist Wenn sie zeitweilige Verbindungsprobleme haben, finden Sie informationen unter Anwendungserfahrung beim Herstellen einer Verbindung mit SQL-Servern in Windows unter "Anwendungen", bei denen eine Verbindung mit SQL-Servern aufgetreten ist. Schließung einer bestehenden Verbindung wurde vom Remotehost erzwungen
Clientsicherheits- und Treiberinformationen SQL-Aliase Wenn 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 wird, starten Sie ihn. Wenn Probleme beim Herstellen einer Verbindung mit einer benannten Instanz auftreten, stellen Sie sicher, dass der 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 Eigenschaften des Domänendienstkontos Wenn Sie verknüpfte Server von Ihrem SQL Server konfigurieren und der Wert "Trust for Del " auf "false" festgelegt ist, treten möglicherweise Authentifizierungsprobleme mit Ihren verknüpften Serverabfragen auf. Problembehandlung bei Fehlern bei der Anmeldung für Benutzer
SQL Server-Informationen SPN ist nicht vorhanden Überprüfen Sie diese Tabelle, um festzustellen, ob SPNs für Sql Server ordnungsgemäß konfiguriert sind und probleme behoben werden. Der SSPI-Kontext kann nicht erstellt werden
SQL Server-Informationen Details zur SQL Server-Instanz Überprüfen Sie die Werte von TCP Enabled, TCP Ports usw. Überprüfen Sie, ob TCP/IP auf serverseitiger Seite aktiviert ist und ob Ihre SQL-Standardinstanz 1433 oder einen anderen Port überwacht. Verschiedene Konnektivitätsfehler

Option 2:

Wenn Sie SQLCHECK nicht auf Ihrem SQL Server-Computer 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 wird und die folgende Meldung im SQL Server-Fehlerprotokoll angezeigt wird:

    SQL Server ist nun bereit für Clientverbindungen. Diese Meldung dient nur zu Informationszwecken. Es ist keine Benutzeraktion erforderlich.

    Verwenden Sie den folgenden Befehl in PowerShell, um den Status von SQL Server-Diensten im 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 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 auf Anomalien: 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 geeignete Protokolle überwacht, 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 dem 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 über andere Clientsysteme und unterschiedliche Benutzeranmeldungen eine Verbindung mit SQL Server herstellen können. Wenn Sie in der Lage sind, kann das Problem für den Client oder die Anmeldung spezifisch sein, die das Problem auftritt. Überprüfen Sie die Windows-Ereignisprotokolle auf dem problematischen Client, um weitere Zeiger zu finden. Ü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 für 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 Kerberos-bezogene Probleme beheben, können Sie die Skripts unter How to determine if the authentication type is Kerberos.

Allgemeine Konnektivitätsprobleme

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