"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
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 aufMY-PC
, aber es funktioniert nicht, weil der SQL-Browser aufYOUR-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 aufYOUR-PC
läuft ).