Примечание. Я явно изменил имена серверов и IP-адреса на вымышленные.
Вот что происходит. У меня есть сервер, на котором я звоню MYSERVER
, под управлением Microsoft SQL Server Express 2005. Прямо на самом сервере у меня установлено соединение ODBC, указывающее на себя, и это уже отлично работает. Я вхожу в систему с использованием аутентификации SQL Server (не аутентификации Windows), и она настроена так:
Как я уже сказал, это работает. Но затем у меня есть другой компьютер, который находится в совершенно другом домене / не в интрасети, который должен получить доступ к тому же SQL-серверу, расположенному на MYSERVER. Поскольку он находится в другом домене, он не распознает имя «MYSERVER»; Я должен указать его на IP-адрес MYSERVER, который мы скажем, 123.456.789.012. Но соединение ODBC там, похоже, не работает. Я попытался настроить это так:
Это не работает Когда я ввожу имя пользователя и пароль и нажимаю «Далее», он останавливается на добрые 10–20 секунд, а затем, наконец, возвращается со следующей ошибкой:
Connection failed:
SQLState: '01000'
SQL Server Error: 1326
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).
Connection failed:
SQLState: '08001'
SQL Server Error: 17
[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.
Если я пытаюсь сделать то же самое, но изменить «сервер» с 123.456.789.012\SQLEXPRESS
просто старого 123.456.789.012
, я получу другую ошибку:
Connection failed:
SQLState: '01000'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Invalid Instance()).
Connection failed:
SQLState: '08001'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection.
Теперь я знаю, о чем ты думаешь. Вы можете подумать: «Да, вы, вероятно, не открывали брандмауэр для порта 1433, тупица». За исключением того, что я сделал, и я подтвердил это, поскольку я могу успешно запустить:
telnet 123.456.789.012 1433
... из командной строки все, что я хочу. Так что я не уверен, что делать. Я знаю, что SQL Server существует, работает, и соединение ODBC может быть установлено правильно; Я просто не уверен, что я ошибся в настройках подключения, которые выдают эти ошибки. Исходя из последней ошибки, которую я перечислил, может показаться, что она может подключиться к серверу, но просто не может найти экземпляр (так как я не указал тот в тот раз). Так значит ли это, что мне просто нужно использовать какой-то другой синтаксис для указания IP вместе с именем экземпляра? Что я делаю? Заранее спасибо.