Настройка подключения к MS-SQL серверу

Введение

  • Для подключения используется библиотека FreeTDS.

  • Примеры указаны для ОС Ubuntu 18.04.

  • Шаг 1 и 2 можно пропустить если используется docker образ системы с версией r >= 2.0.0

Описание

1. Установить библиотеку FreeTDS для подключения к mssql.

$ sudo apt-get install freetds-bin freetds-common tdsodbc

2. Создать запись для драйвера FreeTDS в odbcinst.ini.

$ sudo nano /etc/odbcinst.ini

Информация о драйвере, которую необходимо дописать в файл:

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

3. Настроить компонент sql-запрос.

  • База Данных – Другая

  • Драйвер – ODBC

Указать строку соединения:

Driver={FreeTDS};Server=<ipaddr>,<port>;Database=<database>;UID=<login>;PWD=<pwd>;TDS_Version=7.4;ClientCharset=UTF-8

Например:

Driver={FreeTDS};Server=192.168.15.75,1433;Database=test_db;UID=UserLogin;PWD=UserPwd;TDS_Version=7.4;ClientCharset=UTF-8

Замечания

1. Если в тексте запроса присутствуют русские символы, то эти значения необходимо обернуть в преобразование типов (к varchar(Size) или text)

Например:

select cast('Яблоко' as text) as result, cast('локо' as varchar(2000)) as name, (1)
       'око' as login, 'ко' as id; (2)
1 – Значения из первой строки будут корректно переданы в драйвер и далее в mssql
2 – Значения из второй строки будут переданы с ошибкой.

2. Если в ответе на запрос могут присутствовать русские символы, то эти поля необходимо обернуть в преобразование типов (к varchar(Size) или text)

Например:

select cast((select name+','+cast(id as varchar(36))+';' from oktell.dbo.a_users for xml path ('')) as text) as result