SSMS
 sql >> Database >  >> Database Tools >> SSMS

Connessione remota a MS SQL - Errore durante l'utilizzo di pyodbc rispetto al successo con SQL Server Management Studio

"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 su MY-PC , ma non funziona perché il browser SQL è stato installato con "Start Mode" impostato su "Manual" su YOUR-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 su YOUR-PC ).