„Но защо...?“
За тези, които се интересуват от защо SQL Server Management Studio (SSMS) може да се свърже с servername\instance
докато други приложения (като нашите pyodbc приложения) не могат, това е защото SSMS поддържа MRU (Най-скоро използван) списък с номера на портове в системния регистър на Windows на
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib\LastConnect
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSSQLServer\Client\SuperSocketNetLib\LastConnect
Всеки запис на MRU (стойност в регистъра) изглежда така:
Name: PANORAMA\SQLEXPRESS
Type: REG_SZ
Data: -1006030326:tcp:PANORAMA,52865
След като SSMS се свърже успешно по име на екземпляр чрез услугата SQL Browser на отдалечената машина, той може да продължи да се свързва по име на екземпляр, дори ако SQL браузърът вече не работи на отдалечената машина, при условие че номерът на порта не е променен. Приложенията, които не използват този списък MRU (като нашето приложение pyodbc), трябва да имат услугата SQL Browser, работеща на отдалечената машина всеки път, когато искат да се свържат по име на екземпляр.
Най-често срещаният сценарий:
- Искам да се свържа с
YOUR-PC\SQLEXPRESS
. Опитвам се да направя това от SSMS наMY-PC
, но не работи, защото SQL браузърът е инсталиран със „Стартов режим“, зададен на „Ръчно“ наYOUR-PC
. - Моля ви да стартирате услугата SQL браузър на
YOUR-PC
, и любезно се съобразявате, но просто стартирате услугата и забравяте да промените настройката „Стартов режим“ на „Автоматично“. - Мога да се свържа чрез SSMS (който кешира
YOUR-PC\SQLEXPRESS
порт в MRU). Моето приложение за Python също може да се свърже. - След следващия път
YOUR-PC
се рестартира, мога да се свържа чрез SSMS (чрез MRU), но моето приложение за Python не може (защото услугата SQL Browser вече не работи наYOUR-PC
).