Примечание. Я явно изменил имена серверов и 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 вместе с именем экземпляра? Что я делаю? Заранее спасибо.
источник
Включили ли вы службу обозревателя SQL Server, как настроить SQL Server 2005 для разрешения удаленных подключений ?
источник
Этот поток исправил то же сообщение об ошибке для меня при использовании Access для подключения к серверу MSSQL 2008. MSSQL 2005 и более ранние версии работали нормально, просто используя имя компьютера в строке подключения, но мне пришлось перейти на строку подключения в Access до полной формы при обновлении экземпляра до 2008 года:
servername\instancename,portnumber
источник
У меня была та же проблема, и мне удалось ее решить, изменив драйвер SQL на драйвер собственного клиента SQL. Это было странно, так как в моем случае это работало отлично в течение многих лет, а затем просто перестало работать. Я подозреваю, что это что-то вроде повреждения драйвера, возможно, может помочь повторная установка MDAC, но пока я рад, что он работает вообще!
источник
Признает ли он имя сервера, если оно будет полностью квалифицированным? Если бы это был MYSERVER.domain.com? Мы должны были сделать это с SQL Server при подключении из другого домена. Если вы можете подключить системный DSN ODBC при тестировании источника данных, вы делаете успехи. Если он не подключается в настройке ODBC, вы должны сначала исправить это.
источник
MYSERVER.domain.com\SQLEXPRESS
и другоеMYSERVER.domain.com
, но оба они дали мне те же ошибки, которые я перечислил выше, соответственно.Используете ли вы именованные каналы или TCP на соединение ODBC, которое работает? TCP включен?
источник
Убедитесь, что для SQL-сервера включены удаленные соединения tcp.
источник
Просто дикий выстрел здесь, но что произойдет, если вы поставите двойную обратную косую черту перед именем сервера или IP-адресом? Мне просто кажется, что это обычно требуется для большинства других подключений Windows / Microsoft.
источник
У меня была похожая проблема. В моем случае другой sw настраивает настройку ODBC, поэтому я не могу изменить драйвер. Я решил свой случай так:
Тогда это начало работать. Клиентская ОС: Win7 x64 Драйвер: sqlsrv32.dll
источник
Для чего это стоит, я начал получать эту ошибку на соединение, которое ранее работало. Оказалось, что служба MSSQL $ SQLEXPRESS как-то остановилась. Перезапуск исправил проблему.
источник
У меня также была эта проблема, и она была такой же простой: сервер, указанный в качестве основного DNS-сервера для этого сервера, был удален, и приложение больше не могло правильно разрешать имя сервера SQL в сети. Все сразу начало работать снова, когда я исправил локальный DNS-сервер на работающий.
источник