Empfohlene Voraussetzungen und Prüfliste für die Problembehandlung von SQL Server-Konnektivitätsproblemen
Gilt für: SQL Server
Ursprüngliche KB-Nummer: 4009936
Empfohlene Voraussetzungen
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:
Laden Sie die neueste Version von SQLCHECK herunter.
Entpacken Sie die heruntergeladene Datei in einen Ordner, z. B. C:\Temp.
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:
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."
Ü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 verwendenTest-NetConnection
:$servername = "DestinationServer" Test-NetConnection -ComputerName $servername
Ü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
Ü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")
Ü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.
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ügtCONNECT
. Weitere Informationen zum ErteilenCONNECT
von Berechtigungen für den Datenbankprinzipal finden Sie unter GRANT-Datenbankberechtigungen. Weitere Informationen zum ErteilenCONNECT 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 + "'")
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.