SSMS
 sql >> Datenbank >  >> Database Tools >> SSMS

Remote-Verbindung zu MS SQL – Fehler bei der Verwendung von pyodbc vs. Erfolg bei der Verwendung von SQL Server Management Studio

"Aber warum ...?"

Für diejenigen, die am warum interessiert sind SQL Server Management Studio (SSMS) kann eine Verbindung zu servername\instance herstellen Während andere Anwendungen (wie unsere Pyodbc-Apps) dies nicht können, liegt dies daran, dass SSMS eine MRU-Liste (Most Latest Used) mit Portnummern in der Windows-Registrierung unter

führt
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib\LastConnect

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

Jeder MRU-Eintrag (Registry-Wert) sieht ungefähr so ​​aus:

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

Nachdem SSMS erfolgreich eine Verbindung nach Instanznamen über den SQL-Browserdienst auf dem Remotecomputer hergestellt hat, kann es weiterhin eine Verbindung nach Instanznamen herstellen, selbst wenn der SQL-Browser nicht mehr auf dem Remotecomputer ausgeführt wird, vorausgesetzt, die Portnummer hat sich nicht geändert. Apps, die diese MRU-Liste nicht verwenden (wie unsere pyodbc-App), müssen jedes Mal, wenn sie eine Verbindung über den Instanznamen herstellen möchten, den SQL-Browser-Dienst auf dem Remote-Computer ausführen.

Das häufigste Szenario:

  • Ich möchte mich mit YOUR-PC\SQLEXPRESS verbinden . Ich versuche das über SSMS auf MY-PC , aber es funktioniert nicht, weil der SQL-Browser auf YOUR-PC mit "Startmodus" auf "Manuell" installiert wurde .
  • Ich bitte Sie, den SQL-Browser-Dienst auf YOUR-PC zu starten , und Sie stimmen freundlicherweise zu, aber Sie starten einfach den Dienst und vergessen, die Einstellung "Startmodus" auf "Automatisch" zu ändern.
  • Ich kann mich über SSMS verbinden (wodurch die Datei YOUR-PC\SQLEXPRESS zwischengespeichert wird Port in der MRU). Meine Python-App kann sich auch verbinden.
  • Nach dem nächsten Mal YOUR-PC Neustarts, ich kann mich über SSMS (über die MRU) verbinden, aber meine Python-App kann dies nicht (weil der SQL-Browser-Dienst nicht mehr auf YOUR-PC läuft ).