Драйвер ODBC не может читать пользовательские данные в режиме аутентификации SQL-сервера

Возникла проблема с подключением ODBC из базы данных ORACLE к MS SQL Server.

Я уже подключился к sqlcmd. Таким образом, серверы видят друг друга и могут общаться. Драйвер ODBC не выполняет аутентификацию, потому что он не может прочитать данные пользователя и пароля из файла odbc.ini. Я читал, что это происходит из-за того, что драйвер odbc не принимает данные аутентификации, если они хранятся в виде обычного текста, но не было объяснения, как я могу хранить данные другим способом.

Среда:

  • Драйвер ODBC: драйвер Microsoft ODBC 11 для SQL Server
  • Диспетчер драйверов: Unix ODBC 2.3.0
  • ОС: ORACLE linux 6.5
  • Целевая база данных: MS SQL Server 2008 R2

Это работает:

sqlcmd -S address -U username -P password

odbc.ini файл:

[SQL_LINK]
Driver = ODBC Driver 11 for SQL Server
Server = tcp:address,port
UID = username
PWD = password

Лог-файл:

[ODBC][913][1417453346.612341][SQLConnect.c][3654]
                Entry:
                        Connection = 0x18f40a0
                        Server Name = [SQL_LINK][length = 8 (SQL_NTS)]
                        User Name = [NULL]
                        Authentication = [NULL]
                UNICODE Using encoding ASCII 'UTF8' and UNICODE 'UTF16LE'

                DIAG [28000] [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Login failed for user ''.

person Tamas    schedule 02.12.2014    source источник


Ответы (2)


Помимо использования драйвера ODBC, который считывает uid / pwd из ini, все, что вы можете сделать, - это заставить приложение передать подробности. Вы не упоминаете, какое приложение вызывает драйвер?

person Nick Gorham    schedule 02.12.2014
comment
Я использую команду isql SQL_LINK для проверки ссылки. Как вы думаете, как управлять приложением, которое передает данные пользователя? - person Tamas; 02.12.2014
comment
Если вы используете isql, то isql SQL_LINK uid pwd будет делать то, что вы хотите - person Nick Gorham; 03.12.2014
comment
Я использую команду isql только в тестовых целях. Конечная цель - создать рабочую ссылку на базу данных в oracle. - person Tamas; 04.12.2014

В конфигурации ODBC можно указать, используете ли вы аутентификацию SQL или интегрированную. Но вы не можете использовать его для хранения пользователя и пароля. Это правда в окнах. Не уверен, что unser linux, но ODBC - это ODBC.

Я не знаю, какое приложение или технологию вы используете, но: вам необходимо указать в соответствующей строке подключения имя пользователя и пароль.

Просто предложение для строк подключения: http://www.connectionstrings.com/

person user_0    schedule 02.12.2014
comment
Драйвер Postgre ODBC может хранить пользовательские данные в файле odbc.ini, я думал, что он обычно работает. В ORACLE SQL Developer я сделал ссылку на базу данных CREATE PUBLIC DATABASE LINK SQL_LINK CONNECT TO "un" IDENTIFIED BY "pw" USING 'SQL_LINK';, но когда я запускаю select, она говорит ORA-28545: error diagnosed by Net8 when connecting to an agent Unable to retrieve text of NETWORK/NCR message 65535 - person Tamas; 03.12.2014