Как соединение OLEDB / ODBC знает путь к базе данных SQL Server только по имени?

279
BarrettNashville

Если у меня есть такая строка подключения, которую я использую в Data Connection в Excel, чтобы получить данные из базы данных 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 

Как мой компьютер узнает путь к MY_SQL_SERVER_NAMEсети?

Я предполагаю, что это как-то установлено моей компанией с использованием какого-то файла конфигурации где-то, но я не знаю, как все это работает под капотом.

Если бы я получал данные с веб-сайта вместо базы данных SQL Server, ресурсу веб-сайта должен предшествовать путь / имя домена, например: http:\\www.example.com\MY_RESOURCE_NAME.html

Без этого пути я бы не смог добраться MY_RESOURCE_NAME.html. Итак, как же работает ODBC без предшествующего пути MY_SQL_SERVER_NAME?

Моя проблема в том, что большую часть времени эта строка подключения работает нормально. Однако, если я дома по VPN, это не так. Но я понятия не имею, как это устранить.

Примечания. У меня нет подключения, настроенного MY_SQL_SERVER_NAMEв Администраторе источника данных ODBC Windows, поэтому мой компьютер каким-то образом обращается к SQL Server, используя только строку подключения AFAIK.

2

1 ответ на вопрос

2
Frank Thomas

ODBC полагается на возможности разрешения имен хостов, поэтому аргумент источника данных должен быть выражением, которое хост может искать через доступные механизмы. В Windows это включает разрешение через SMB / CIFS, WINS, HostFile, DNS, mDNS и т. Д.

VPN подчеркивает, что вы используете именование SMB или DNS (с коротким именем, а не полным доменным именем), поскольку для обоих из них, как правило, требуются полные DNS-имена при настройке в системах, которые постоянно не находятся в рассматриваемой сети. Например, ваш хост, скорее всего, указывает на DNS-сервер локальной сети, который не размещает зону для сети на другой стороне VPN. в этих случаях вы должны использовать полное доменное имя, чтобы запрос был разрешен на правильном сервере.

ты мог бы, да. не уверен, к чему ты клонишь. Frank Thomas 6 лет назад 0
или технология NBT / SMB, или NFS, или Host File, или WINS ... с точки зрения VPN, хотя только DNS является протоколом именования INTERNETWORK, поэтому он работает в сетях, тогда как NBT / SMB или WINS имеют область действия локальной сети, и Хост-файл имеет локальную область. Frank Thomas 6 лет назад 0
Любые доступные встроенные средства Windows (которые не требуют прав администратора для установки / использования), которые я мог бы использовать, чтобы выяснить, что `MY_SQL_SERVER_NAME` разрешает на моем компьютере? BarrettNashville 6 лет назад 0
Нашел `nslookup`. Поэтому, если я открою командную строку и наберу `nslookup MY_SQL_SERVER_NAME`, он покажет мне сервер и IP-адрес, к которому он обращается. BarrettNashville 6 лет назад 0
NSLookup - отличный инструмент для проверки имен DNS. для NBT / SMB / WINS вы можете использовать `NET VIEW`. Frank Thomas 6 лет назад 0