SSMS
 sql >> Base de données >  >> Database Tools >> SSMS

Connexion à distance à MS SQL - Erreur lors de l'utilisation de pyodbc vs succès lors de l'utilisation de SQL Server Management Studio

"Mais pourquoi... ?"

Pour ceux qui s'intéressent à pourquoi SQL Server Management Studio (SSMS) peut se connecter à servername\instance alors que d'autres applications (comme nos applications pyodbc) ne le peuvent pas, c'est parce que SSMS conserve une liste MRU (les plus récemment utilisés) des numéros de port dans le registre Windows à

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib\LastConnect

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSSQLServer\Client\SuperSocketNetLib\LastConnect

Chaque entrée MRU (valeur de registre) ressemble à ceci :

Name: PANORAMA\SQLEXPRESS
Type: REG_SZ 
Data: -1006030326:tcp:PANORAMA,52865

Une fois que SSMS s'est connecté avec succès par nom d'instance via le service SQL Browser sur la machine distante, il peut continuer à se connecter par nom d'instance même si le navigateur SQL n'est plus en cours d'exécution sur la machine distante, à condition que le numéro de port n'ait pas changé. Les applications qui n'utilisent pas cette liste MRU (comme notre application pyodbc) doivent avoir le service SQL Browser en cours d'exécution sur la machine distante chaque fois qu'elles souhaitent se connecter par nom d'instance.

Le scénario le plus courant :

  • Je veux me connecter à YOUR-PC\SQLEXPRESS . J'essaie de le faire depuis SSMS sur MY-PC , mais cela ne fonctionne pas car le navigateur SQL a été installé avec le "Mode de démarrage" défini sur "Manuel" sur YOUR-PC .
  • Je vous demande de démarrer le service SQL Browser sur YOUR-PC , et vous vous conformez gentiment, mais vous venez de démarrer le service et oubliez de changer le paramètre "Mode de démarrage" sur "Automatique".
  • Je peux me connecter via SSMS (qui met en cache le YOUR-PC\SQLEXPRESS port dans le MRU). Mon application Python peut également se connecter.
  • Après la prochaine fois YOUR-PC redémarre, je peux me connecter via SSMS (via le MRU) mais mon application python ne peut pas (car le service SQL Browser ne fonctionne plus sur YOUR-PC ).