"Ma perché...?"
Per chi è interessato a perché SQL Server Management Studio (SSMS) può connettersi a servername\instance
mentre altre applicazioni (come le nostre app pyodbc) non possono, è perché SSMS mantiene un elenco di numeri di porta MRU (più usati di recente) nel registro di Windows in
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib\LastConnect
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSSQLServer\Client\SuperSocketNetLib\LastConnect
Ogni voce MRU (valore di registro) ha un aspetto simile a questo:
Name: PANORAMA\SQLEXPRESS
Type: REG_SZ
Data: -1006030326:tcp:PANORAMA,52865
Dopo che SSMS si è connesso correttamente tramite il nome dell'istanza tramite il servizio SQL Browser sul computer remoto, può continuare a connettersi tramite il nome dell'istanza anche se SQL Browser non è più in esecuzione sul computer remoto, a condizione che il numero di porta non sia cambiato. Le app che non utilizzano questo elenco MRU (come la nostra app pyodbc) devono avere il servizio SQL Browser in esecuzione sul computer remoto ogni volta che desiderano connettersi in base al nome dell'istanza.
Lo scenario più comune:
- Voglio connettermi a
YOUR-PC\SQLEXPRESS
. Provo a farlo da SSMS suMY-PC
, ma non funziona perché il browser SQL è stato installato con "Start Mode" impostato su "Manual" suYOUR-PC
. - Ti chiedo di avviare il servizio SQL Browser su
YOUR-PC
, e gentilmente rispetti, ma avvii il servizio e dimentichi di modificare l'impostazione "Modalità di avvio" in "Automatico". - Sono in grado di connettermi tramite SSMS (che memorizza nella cache
YOUR-PC\SQLEXPRESS
porta nella MRU). Anche la mia app Python può connettersi. - Dopo la prossima volta
YOUR-PC
si riavvia, posso connettermi tramite SSMS (tramite MRU) ma la mia app Python non può (perché il servizio SQL Browser non è più in esecuzione suYOUR-PC
).