Conditions préalables recommandées et liste de contrôle pour résoudre les problèmes de connectivité SQL Server
S'applique à : SQL Server
Numéro de base de connaissances d’origine : 4009936
Conditions préalables recommandées
Pour résoudre efficacement les problèmes de connectivité, rassemblez les informations suivantes :
Texte du message d’erreur et des codes d’erreur. Vérifiez si l’erreur est intermittente (se produit seulement parfois) ou cohérente (se produit tout le temps).
Journaux des événements d’application et système à partir de SYSTÈMES SQL Server et clients. Ces journaux d’activité peuvent vous aider à vérifier s’il existe des problèmes à l’échelle du système sur votre serveur SQL Server.
Si les connexions échouent à partir d’une application, collectez les chaîne de connexion de l’application. Ces chaînes sont généralement trouvées dans les fichiers Web.config pour les applications ASP.NET.
Collectez et passez en revue les journaux d’erreurs SQL Server pour d’autres messages d’erreur et exceptions.
Si vous disposez d’un accès administrateur à l’ordinateur SQL Server, rassemblez et examinez les paramètres de l’ordinateur et les comptes de service actuels à l’aide de la procédure suivante :
Téléchargez la dernière version de SQLCHECK.
Décompressez le fichier téléchargé dans un dossier, par exemple, C :\Temp.
Exécutez l’invite de commandes en tant qu’administrateur pour collecter les données et enregistrer dans un fichier. Par exemple :
SQLCHECK > C:\Temp\server01.SQLCHECK.TXT
.
Note
Si vous résolvez des problèmes de connectivité à partir d’un client distant ou résolution des problèmes de requêtes de serveur lié, exécutez l’outil SQLCHECK sur tous les systèmes impliqués.
Liste de contrôle rapide pour résoudre les problèmes de connectivité
Note
Les sections suivantes vous aident à rechercher rapidement les problèmes de connectivité. Passez en revue les rubriques individuelles pour connaître les étapes de résolution des problèmes détaillées.
Option 1 :
Si vous avez accès à la sortie de l’outil SQLCHECK mentionné dans la section Conditions préalables recommandées et passez en revue les informations de différentes sections du fichier de sortie (Ordinateur, Sécurité du client et SQL Server), utilisez les informations pour résoudre les problèmes qui contribuent à votre problème. Regardez les exemples suivants :
Section du fichier | Texte à rechercher | Action potentielle | Peut vous aider à résoudre les problèmes (exemples) |
---|---|---|---|
Informations sur l’ordinateur | Avertissement : Le pilote réseau peut être obsolète | Vérifiez en ligne les nouveaux pilotes. | Diverses erreurs de connectivité |
Informations sur la sécurité du client et le pilote | Les suites de chiffrement Diffie-Hellman sont activées. Risque possible d’échecs TLS intermittents si la version de l’algorithme est différente entre les clients et les serveurs | Si vous rencontrez des problèmes de connectivité intermittents, consultez Les applications rencontrent des erreurs de connexion TLS fermées de force lors de la connexion à SQL Server dans Windows. | Une connexion existante a dû être fermée par l’hôte distant |
Informations sur la sécurité du client et le pilote | Alias SQL | S’il est présent, vérifiez que les alias sont configurés correctement et pointent vers le serveur et les adresses IP appropriés. | A network-related or instance-specific error occurred while establishing a connection to SQL Server |
Informations SQL Server | Services d’intérêt | Si votre service SQL n’est pas démarré, démarrez-le. Si vous rencontrez des problèmes de connexion à une instance nommée, vérifiez que le service SQL Server Browser est démarré ou essayez de redémarrer le service de navigateur. | A network-related or instance-specific error occurred while establishing a connection to SQL Server |
Informations SQL Server | Propriétés du compte de service de domaine | Si vous configurez des serveurs liés à partir de votre serveur SQL Server et que la valeur Trust for Del est définie sur false, vous pouvez rencontrer des problèmes d’authentification avec vos requêtes de serveur lié. | Résolution des erreurs « Échec de connexion pour l’utilisateur » |
Informations SQL Server | SPN n’existe pas | Vérifiez ce tableau pour voir si les noms de principal de service de votre serveur SQL Server sont correctement configurés et corrigez les problèmes identifiés. | Impossible de générer un contexte SSPI |
Informations SQL Server | Détails de l’instance SQL Server | Vérifiez les valeurs des ports TCP activés, TCP, et ainsi de suite. Vérifiez si TCP/IP est activé côté serveur et si votre instance SQL par défaut écoute sur 1433 ou un autre port. | Diverses erreurs de connectivité |
Option 2 :
Si vous n’êtes pas en mesure d’exécuter SQLCHECK sur votre ordinateur SQL Server, vous pouvez vérifier les éléments suivants avant d’effectuer une résolution détaillée des problèmes :
Vérifiez que SQL Server est démarré et que vous voyez le message suivant dans le journal des erreurs SQL Server :
SQL Server est maintenant prêt pour les connexions clientes. Ce message est fourni à titre d'information. Aucune action n'est requise de la part de l'utilisateur.
Utilisez la commande suivante dans PowerShell pour vérifier l’état des services SQL Server sur le système :
Get-Service | Where {$_.status -eq 'running' -and $_.DisplayName -match "sql server*"}
Utilisez la commande suivante pour rechercher dans le fichier journal des erreurs la chaîne spécifique « SQL Server est maintenant prêt pour les connexions clientes. Ceci est un message d’information ; aucune action n’est requise de la part de l’utilisateur. » :
Get-ChildItem -Path "c:\program files\microsoft sql server\mssql*" -Recurse -Include Errorlog |select-string "SQL Server is now ready for client connections."
Vérifiez la connectivité de base via l’adresse IP et vérifiez les anomalies suivantes :
ping -a <SQL Server machine>, ping -a <SQL Server IP address>
. Si vous remarquez des problèmes, collaborez avec votre administrateur réseau. Vous pouvez également utiliserTest-NetConnection
dans PowerShell :$servername = "DestinationServer" Test-NetConnection -ComputerName $servername
Vérifiez si SQL Server écoute sur les protocoles appropriés en examinant le journal des erreurs :
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
Vérifiez si vous êtes en mesure de vous connecter à SQL Server à l’aide d’un fichier UDL. S’il fonctionne, il peut y avoir un problème avec le chaîne de connexion. Pour obtenir des instructions sur la procédure de test UDL, consultez Tester la connectivité OLE DB à SQL Server à l’aide d’un fichier UDL. Vous pouvez également utiliser le script suivant pour créer et lancer un fichier UDL-Test.udl (stocké dans le dossier %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")
Vérifiez si vous êtes en mesure de vous connecter à SQL Server à partir d’autres systèmes clients et des connexions utilisateur différentes. Si vous êtes en mesure de le faire, le problème peut être spécifique au client ou à la connexion qui rencontre le problème. Consultez les journaux des événements Windows sur le client problématique pour plus de pointeurs. Vérifiez également si les pilotes réseau sont à jour.
Si vous rencontrez des échecs de connexion, vérifiez qu’une connexion (principal de serveur) existe et qu’elle dispose
CONNECT SQL
des autorisations pour SQL Server. En outre, assurez-vous que la base de données par défaut affectée à la connexion est correcte et que le principal de base de données mappé disposeCONNECT
d’autorisations sur la base de données. Pour plus d’informations sur l’octroiCONNECT
d’autorisations au principal de base de données, consultez GRANT Database Permissions. Pour plus d’informations sur l’octroiCONNECT SQL
d’autorisations au principal du serveur, consultez GRANT Server Permissions. Utilisez le script suivant pour vous aider à identifier ces autorisations :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 + "'")
Si vous résolvez les problèmes liés à Kerberos, vous pouvez utiliser les scripts à l’adresse Guide pratique pour déterminer si le type d’authentification est Kerberos.
Problèmes de connectivité courants
Lorsque vous avez parcouru les prérequis et la liste de contrôle, consultez les problèmes de connectivité courants et sélectionnez le message d’erreur correspondant pour obtenir des étapes de résolution des problèmes détaillées.