Como uma conexão OLEDB / ODBC conhece o caminho para um banco de dados do SQL Server apenas pelo nome?

2

Se eu tiver uma string de conexão como essa que eu uso em uma conexão de dados no Excel para obter dados de um banco de dados do SQL Server:

OLEDB;
Provider=SQLOLEDB.1;
User ID=MY_USERNAME;
Password=MY_PASSWORD;
Persist Security Info=False;
Initial Catalog=ABC;
Data Source=MY_SQL_SERVER_NAME;
Use Procedure for Prepare=1;
Auto Translate=True;
Packet Size=4096;
Use Encryption for Data=False;
Tag with column collation when possible=False

Como meu computador sabe o caminho para MY_SQL_SERVER_NAME na rede?

Eu suponho que seja de alguma forma definido pela minha empresa usando algum tipo de arquivo de configuração em algum lugar, mas eu realmente não sei como tudo funciona sob o capô.

Se eu estivesse obtendo dados de um site em vez de um banco de dados do SQL Server, o recurso do site precisaria ser precedido por um caminho / nome de domínio como este: http:\www.example.com\MY_RESOURCE_NAME.html

Sem esse caminho, não consegui acessar MY_RESOURCE_NAME.html . Então, como o ODBC funciona sem um caminho anterior a MY_SQL_SERVER_NAME ?

Meu problema é que na maioria das vezes essa string de conexão funciona bem. No entanto, se estou em casa na VPN não. Mas eu não tenho ideia de como solucionar isso.

Notas: Eu não tenho uma conexão configurada para MY_SQL_SERVER_NAME no Administrador de Fonte de Dados ODBC do Windows, portanto, meu computador está de alguma forma acessando o SQL Server usando apenas a cadeia de conexão AFAIK.

    
por BarrettNashville 27.03.2018 / 19:08

1 resposta

2

O ODBC depende dos recursos de resolução do nome do host, portanto, o argumento Data Source precisa ser uma expressão que o host possa pesquisar, por meio de seus mecanismos disponíveis. No Windows, isso envolve resolução via SMB / CIFS, WINS, HostFile, DNS, mDNS etc.

A VPN ressalta que você está usando a nomenclatura SMB ou DNS (com um nome abreviado, não FQDN), pois ambos geralmente exigem nomes DNS totalmente qualificados quando configurados em sistemas que não residem permanentemente na rede em questão. Por exemplo, seu host provavelmente aponta para um servidor de DNS da LAN, que não hospeda uma zona para a rede no outro lado da VPN. Nesses casos, você deve usar um nome de domínio totalmente qualificado para que a consulta seja resolvida no servidor correto.

    
por 27.03.2018 / 19:13