„Ale proč...?“
Pro zájemce o proč SQL Server Management Studio (SSMS) se může připojit k servername\instance
zatímco jiné aplikace (jako naše aplikace pyodbc) nemohou, je to proto, že SSMS uchovává seznam čísel portů MRU (nejnověji používaných) v registru Windows na adrese
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib\LastConnect
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSSQLServer\Client\SuperSocketNetLib\LastConnect
Každý záznam MRU (hodnota registru) vypadá asi takto:
Name: PANORAMA\SQLEXPRESS
Type: REG_SZ
Data: -1006030326:tcp:PANORAMA,52865
Jakmile se SSMS úspěšně připojí podle názvu instance prostřednictvím služby SQL Browser na vzdáleném počítači, může pokračovat v připojení podle názvu instance, i když SQL Browser již na vzdáleném počítači není spuštěn, za předpokladu, že se nezměnilo číslo portu. Aplikace, které tento seznam MRU nepoužívají (jako naše aplikace pyodbc), musí mít na vzdáleném počítači spuštěnou službu SQL Browser pokaždé, když se chtějí připojit podle názvu instance.
Nejběžnější scénář:
- Chci se připojit k
YOUR-PC\SQLEXPRESS
. Zkouším to udělat ze SSMS naMY-PC
, ale nefunguje to, protože prohlížeč SQL byl nainstalován s "Start Mode" nastaveným na "Manual" naYOUR-PC
. - Žádám vás o spuštění služby SQL Browser na
YOUR-PC
, a laskavě vyhovíte, ale pouze spustíte službu a zapomenete změnit nastavení „Režim spuštění“ na „Automaticky“. - Mohu se připojit přes SSMS (která ukládá do mezipaměti
YOUR-PC\SQLEXPRESS
port v MRU). Moje aplikace Python se také může připojit. - Příště
YOUR-PC
restartuje, mohu se připojit přes SSMS (přes MRU), ale moje pythonová aplikace nemůže (protože služba SQL Browser již naYOUR-PC
neběží ).