„Ale dlaczego…?”
Dla zainteresowanych dlaczego SQL Server Management Studio (SSMS) może połączyć się z servername\instance
podczas gdy inne aplikacje (takie jak nasze aplikacje pyodbc) nie mogą, dzieje się tak, ponieważ SSMS przechowuje listę numerów portów MRU (najczęściej używanych) w rejestrze systemu Windows pod adresem
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib\LastConnect
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSSQLServer\Client\SuperSocketNetLib\LastConnect
Każdy wpis MRU (wartość rejestru) wygląda mniej więcej tak:
Name: PANORAMA\SQLEXPRESS
Type: REG_SZ
Data: -1006030326:tcp:PANORAMA,52865
Po pomyślnym połączeniu programu SSMS według nazwy instancji za pośrednictwem usługi przeglądarki SQL na komputerze zdalnym może on nadal łączyć się według nazwy instancji, nawet jeśli przeglądarka SQL nie jest już uruchomiona na komputerze zdalnym, pod warunkiem, że numer portu nie uległ zmianie. Aplikacje, które nie korzystają z tej listy MRU (takie jak nasza aplikacja pyodbc), muszą mieć uruchomioną usługę SQL Browser na zdalnym komputerze za każdym razem, gdy chcą się połączyć według nazwy instancji.
Najczęstszy scenariusz:
- Chcę połączyć się z
YOUR-PC\SQLEXPRESS
. Próbuję to zrobić z SSMS naMY-PC
, ale to nie działa, ponieważ przeglądarka SQL została zainstalowana z „Trybem uruchamiania” ustawionym na „Ręczny” naYOUR-PC
. - Proszę o uruchomienie usługi przeglądarki SQL na
YOUR-PC
, i uprzejmie przestrzegasz, ale po prostu uruchamiasz usługę i zapominasz zmienić ustawienie „Tryb uruchamiania” na „Automatyczny”. - Mogę połączyć się przez SSMS (który buforuje
YOUR-PC\SQLEXPRESS
portu w MRU). Moja aplikacja Pythona też może się połączyć. - Po następnym
YOUR-PC
uruchamia się ponownie, mogę połączyć się przez SSMS (przez MRU), ale moja aplikacja Pythona nie może (ponieważ usługa SQL Browser nie działa już naYOUR-PC
).