Настройка подключения к 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