[S1000] [unixODBC] [FreeTDS] [SQL Server] Невозможно подключиться к источнику данных

Я знаю, что этот вопрос задают много раз, и я пробовал все, но ничего не работал. Я пытаюсь подключиться к базе данных MSSQL на другом сервере от Ubuntu 14.04.

Содержимое из /etc/odbcinst.in

 [ODBC]
 Trace = No
 TraceFile = /tmp/odbc.log

 [FreeTDS]
 Description = FreeTDS
 Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
 Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
 UsageCount = 1
 fileusage=1
 dontdlclose=1

Содержимое из /etc/odbc.in

 [mssql]
 Driver = FreeTDS
 ServerName = mssql
 Port = 1433
 Database = My Database //database has space
 Driver=/usr/local/lib/libtdsodbc.so
 UsageCount = 1
 TDS_Version = 7.3
  instance = SQLEXPRESS

[Default]
Driver=/usr/local/lib/libtdsodbc.so

И раздел mssql в файле /etc/freetds/freetds.conf

[mssql]

 host = server ip
 port = 1433
  database = My Databas
 instance = SQLEXPRESS

  tds version = 7.3
  client charset = UTF-8

Когда я запускаю следующую команду, он генерирует числа, которые увеличивают

  tsql -S mssql -U username -P password

Но когда я запустил

  isql -v mssql username password

После почти 30 разделов он возвращает

[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[08S01][unixODBC][FreeTDS][SQL Server]Unable to connect: Adaptive Server is unavailable or does not exist
[ISQL]ERROR: Could not SQLConnect

net.c: 205: FAILED Подключение к порту 54.214.30.231 1433 (версия TDS 4.2)

Ошибка показывает версию TDS версии 4.2, установленную на моем компьютере, когда я проверяю ее с помощью tsql -C, но я указал 7.3 в файлах conf. Это причина? Если да, то как я могу обновить версию? Если это не причина, то может кто-нибудь, пожалуйста, дайте мне знать, что я делаю неправильно?

Ответ 1

Я думаю, что вам не хватает буквы i в вашем файле конфигурации odbc. Это должно быть вместо odbc.in odbc.ini

Со страницы isql man :

isql, iusql - интерактивный инструмент SQL командной строки unixODBC. Резюме

isql DSN [USER [PASSWORD]] [options] Description

isql - это инструмент командной строки, который позволяет пользователю выполнять SQL в партия или в интерактивном режиме. У него есть несколько интересных опций, таких как возможность генерировать вывод, завернутый в таблицу HTML.

iusql - это тот же инструмент со встроенной поддержкой Unicode. Аргументы

DSN

  • Имя источника данных, которое следует использовать для подключения к базе данных. Источник данных ищется в /etc/odbc.ini и файлы $ HOME/.odbc.ini в указанном порядке, причем последние перезаписывают бывший.

  • ПОЛЬЗОВАТЕЛЬ Указывает пользователя/роль базы данных, под которой должно быть установлено соединение.

  • Пароль ПАРОЛЯ для указанного ПОЛЬЗОВАТЕЛЯ.

То же самое касается /etc/odbcinst.in. Должно быть /etc/odbcinst.ini

Изменить на основе комментария

Адриан, в твоем случае, я думаю, что было бы лучше создать новый вопрос, так как этот номер ошибки отличается от OP.

Сообщение об ошибке: [IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified [ISQL]ERROR: Could not SQLConnect.

На основании вашего сообщения об ошибке вам нужно добавить опцию Server=ip_address в ваш odbc.ini (я тоже рекомендую добавить описание). Не забывайте, что имя в скобках [mssql] должно быть ServerDSN! Вы уверены, что у вас есть правильная версия TDS, указанная в TDS_Version = 7.3? Директивы Driver должно быть достаточно в /etc/odbcinst.ini. Почему есть два разных драйвера - Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so и Driver=/usr/local/lib/libtdsodbc.so является второй символической ссылкой?

Теперь конфигурация будет выглядеть примерно так (я должен догадаться, поскольку я не видел вашу конфигурацию):

[mssql]
Description = "My MSSQL DB for data science"
Driver = FreeTDS
ServerName = mssql
Server = <ip_address>
Port = 1433
Database = My Database //database has space
UsageCount = 1
TDS_Version = 7.3
instance = <my_mssql_instance>