SSMS
 sql >> Base de Dados >  >> Database Tools >> SSMS

Conexão remota ao MS SQL - Erro ao usar pyodbc vs sucesso ao usar o SQL Server Management Studio


"Mas por que...?"

Para os interessados ​​em por que O SQL Server Management Studio (SSMS) pode se conectar a servername\instance enquanto outros aplicativos (como nossos aplicativos pyodbc) não podem, é porque o SSMS mantém uma lista MRU (mais recentemente usada) de números de porta no registro do Windows em
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib\LastConnect

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSSQLServer\Client\SuperSocketNetLib\LastConnect

Cada entrada MRU (valor de registro) se parece com isto:
Name: PANORAMA\SQLEXPRESS
Type: REG_SZ 
Data: -1006030326:tcp:PANORAMA,52865

Depois que o SSMS for conectado com sucesso pelo nome da instância por meio do serviço SQL Browser na máquina remota, ele poderá continuar a se conectar pelo nome da instância mesmo se o SQL Browser não estiver mais em execução na máquina remota, desde que o número da porta não tenha sido alterado. Os aplicativos que não usam essa lista MRU (como nosso aplicativo pyodbc) precisam ter o serviço SQL Browser em execução na máquina remota sempre que quiserem se conectar pelo nome da instância.

O cenário mais comum:
  • Quero me conectar a YOUR-PC\SQLEXPRESS . Eu tento fazer isso do SSMS em MY-PC , mas não funciona porque o SQL Browser foi instalado com "Start Mode" definido como "Manual" em YOUR-PC .
  • Peço que você inicie o serviço SQL Browser em YOUR-PC , e você gentilmente concorda, mas apenas inicia o serviço e esquece de alterar a configuração "Modo de início" para "Automático".
  • Consigo me conectar via SSMS (que armazena em cache o YOUR-PC\SQLEXPRESS porta na MRU). Meu aplicativo python também pode se conectar.
  • Após a próxima vez YOUR-PC reinicia, posso me conectar via SSMS (via MRU), mas meu aplicativo python não pode (porque o serviço SQL Browser não está mais em execução em YOUR-PC ).