Un moyen facile de vérifier la connectivité à SQL Server à partir du client

18

À des fins de dépannage, j'aimerais pouvoir vérifier si un client peut se connecter à une instance SQL Server, indépendamment de l'application qui ne peut pas se connecter à SQL Server.

Existe-t-il un moyen simple (cela signifie, de ne pas avoir à installer de logiciel tiers) de le faire à l'aide des outils système par défaut de Windows? Peut-être en utilisant des scripts ou des applications réseau?

MicSim
la source
sur mon ordinateur portable, je peux créer une connexion ODBC sqlserver et tester l'accès au sqlserver. Mais je ne sais pas si le pilote odc sqlserver peut être trouvé sur tous les clients configurés pour accéder à sqlserver. mais s'il pouvait être trouvé, ce serait le prochain test après avoir vérifié la portée de la protection sqlserver du serveur avec telnet.
miracle173

Réponses:

15

Si le serveur utilise TCP / IP, le moyen le plus simple consiste à simplement Telnet sur le port SQL Server et voir s'il se connecte. Par défaut, c'est le port 1433, donc cela devrait fonctionner:

telnet servername 1433

Ce sera probablement approprié dans la plupart des cas.

S'il utilise un port différent ou des ports dynamiques (communs avec une instance nommée), vous devrez déterminer sur quel port il écoute actuellement. Vérifiez le gestionnaire de configuration SQL Server pour voir s'il s'agit d'un port spécifique ou de ports dynamiques. S'il utilise des ports dynamiques, tant que vous n'avez pas plusieurs instances sur le serveur, netstat -abnc'est probablement le moyen le plus simple de trouver ce qu'il utilise. Sinon, parcourez le journal des événements Windows ou le journal des erreurs SQL Server pour un message indiquant quel port est utilisé par l'instance.

Si SQL Server utilise des canaux nommés, je pense que si vous êtes en mesure d'accéder aux partages sur la machine, vous disposez d'une connectivité réseau adéquate. Cet article dit que vous pouvez aller plus loin et essayer de vous connecter au partage IPC $:

http://msdn.microsoft.com/en-us/library/aa275787%28v=sql.80%29.aspx

net use \\servername\IPC$

C'est écrit pour SQL Server 2000, mais je n'imagine pas que cet aspect ait beaucoup changé, voire pas du tout.

db2
la source
2
Cela ne veut pas voir si un client peut "se connecter à une instance SQL Server". C'est juste un test pour voir si un port écoute.
Thomas Stringer
4
... qui consiste à voir si un système client "peut se connecter à une instance SQL Server, indépendamment de l'application qui ne peut éventuellement pas se connecter à SQL Server". Tout ce qui dépasse la connectivité réseau traite les problèmes d'application.
db2
22

Une méthode de test simple pour la connectivité SQL consiste à créer un fichier texte vide, avec une extension de fichier "UDL". Vous pouvez le créer dans le Bloc-notes. Et il peut avoir n'importe quel nom. J'utilise "TestSQL.UDL"

Enregistrez-le sur le bureau d'un PC Windows et double-cliquez dessus.

Une boîte de dialogue "Propriétés de liaison de données" apparaîtra où vous pouvez entrer l'adresse IP du serveur SQL ainsi qu'un nom d'utilisateur et un mot de passe SQL.

Cliquez sur le bouton "Tester la connexion" pour voir si vous pouvez vous connecter.

entrez la description de l'image ici

DaveB
la source
Assurez-vous de cliquer sur l'onglet Fournisseur et de sélectionner le bon fournisseur OLE DB: «Fournisseur Microsoft OLE DB pour SQL Server»
DaveB
Dave, bienvenue et bonne réponse. Vous pouvez modifier votre message (coin inférieur gauche) pour ajouter ces informations supplémentaires. Supprimez ensuite votre commentaire.
Michael Green
C'est vraiment une excellente réponse car cela fonctionne sur à peu près n'importe quel serveur, peu importe ce qui n'est pas installé ou ce qui n'est pas installé. Tout ce dont vous avez besoin, c'est du Bloc-notes. Merci pour cette excellente réponse, m'a vraiment aidé à convaincre mon client que la connectivité SQL fonctionnait.
robnick
8

À condition que vous ayez l' Microsoft.SqlServer.Smoassemblage dans votre GAC sur la machine locale, cela peut être facilement fait avec PowerShell:

[Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.Smo') | Out-Null

$server = New-Object Microsoft.SqlServer.Management.Smo.Server("YourSqlServerName")

# do a simple operation to see if you can get data
Try {
    $server.Version | Out-Null
    Write-Host "SQL Server connection successful!!!"
}
Catch [System.Exception] {
    Write-Host "Error connecting to SQL Server..."
}
Thomas Stringer
la source