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 l’article d’origine dans la base de connaissances : 4009936
Prérequis recommandés
Pour résoudre efficacement les problèmes de connectivité, collectez 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 des applications et des systèmes système à partir de SQL Server et des systèmes clients. Ces journaux 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înes de connexion à partir de l’application. Ces chaînes se trouvent généralement dans les fichiersWeb.config pour les applications ASP.NET.
Collectez et examinez les journaux d’erreurs SQL Server pour rechercher 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
.
Remarque
Si vous résolvez des problèmes de connectivité à partir d’un client distant ou si vous résolvez 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 la résolution des problèmes de connectivité
Remarque
Les sections suivantes vous aident à rechercher rapidement les problèmes de connectivité. Consultez les rubriques individuelles pour connaître les étapes de dépannage détaillées.
Option 1
Si vous avez accès à la sortie de l’outil SQLCHECK mentionné dans la section Prérequis recommandés et que vous 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. Consultez les exemples suivants :
Section dans le fichier | Texte à rechercher | Action potentielle | Peut aider à résoudre les problèmes (exemples) |
---|---|---|---|
Informations sur l’ordinateur | Avertissement : Le pilote réseau est peut-être obsolète | Recherchez en ligne de nouveaux pilotes. | Diverses erreurs de connectivité |
Informations sur la sécurité du client et le pilote | Diffie-Hellman suites de chiffrement 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 aux serveurs 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 | Le cas échéant, vérifiez que les alias sont correctement configurés 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 SUR 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 SUR 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 Approbation pour 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 SUR SQL Server | SpN n’existe pas | Consultez ce tableau pour voir si les SPN 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 SUR SQL Server | Détails de l’instance SQL Server | Vérifiez les valeurs de TCP Activé, Ports TCP, etc. Vérifiez si TCP/IP est activé côté serveur et si votre instance SQL par défaut écoute sur 1433 ou sur un port différent. | 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 :
Assurez-vous que SQL Server est démarré et que le message suivant s’affiche dans le journal des erreurs SQL Server :
SQL Server est maintenant prêt pour les connexions clientes. Il s’agit d’un message d’information ; aucune action de l’utilisateur n’est requise.
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 sur l’adresse IP et vérifiez les anomalies :
ping -a <SQL Server machine>, ping -a <SQL Server IP address>
. Si vous remarquez des problèmes, contactez votre administrateur réseau. Vous pouvez également utiliserTest-NetConnection
dans PowerShell :$servername = "DestinationServer" Test-NetConnection -ComputerName $servername
Vérifiez si SQL Server écoute les protocoles appropriés en consultant 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 pouvez vous connecter à SQL Server à l’aide d’un fichier UDL. Si cela fonctionne, il peut y avoir un problème avec la 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 de connexions utilisateur différentes. Si vous le pouvez, 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 obtenir d’autres pointeurs. Vérifiez également si les pilotes réseau sont à jour.
Si vous rencontrez des échecs de connexion, vérifiez qu’une connexion (principal du serveur) existe et qu’elle dispose
CONNECT SQL
des autorisations d’accès à 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é dispose d’autorisationsCONNECT
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 des problèmes liés à Kerberos, vous pouvez utiliser les scripts dans Comment déterminer si le type d’authentification est Kerberos.
Problèmes de connectivité courants
Une fois que vous avez passé en revue les conditions préalables et la liste de contrôle, consultez problèmes de connectivité courants et sélectionnez le message d’erreur correspondant pour obtenir des étapes de résolution détaillées.