artem
11.04.2018
1508

Подключение Asterisk к Microsoft SQL Server с помощью ODBC Driver for SQL Server

В статье ранее был описан способ подключения Asterisk к MS SQL с помощью открытого драйвера FreeTDS, помимо этого решения есть ещё ODBC-драйвер, разработанный самой компанией Microsoft – ODBC Driver for SQL Server. В этой статье будет описана установка в CentOS 6 всех основных версий этого драйвера и настройка ODBC-подключения в Asterisk.

Установка ODBC Driver for SQL Server версий 13 и 17

Эти версии драйвера есть в репозитории, предоставляемом Microsoft, просто добавляйте репозиторий и устанавливайте драйвер.

wget -O /etc/yum.repos.d/mssql-release.repo https://packages.microsoft.com/config/rhel/6/prod.repo
# Установка ODBC Driver 17 for SQL Server
yum install msodbcsql17 unixODBC unixODBC-devel
# Установка ODBC Driver 13 for SQL Server
yum install msodbcsql unixODBC unixODBC-devel

Из репозитория Microsoft будет установлена более новая версия unixODBC, чем та, что доступна в репозиториях CentOS 6, обязательно пересоберите Asterisk, чтобы модуль res_odbc.so был собран с включением только что установленной версии unixODBC.

 

Установка ODBC Driver for SQL Server версии 11

ODBC Driver 11 for SQL Server ставится немного сложнее, в репозитории его нет. Если он понадобится Вам по какой-либо причине, скачивайте архив для RedHat 6 здесь.
ODBC Driver 11 for SQL Server требует unixODBC версии 2.3.0, но с версией 2.3.1, доступной из репозитория Microsoft, тоже работает нормально, поэтому вместо сборки из исходников unixODBC 2.3.0, можно просто установить из репозитория unixODBC 2.3.1 (дополнительный плюс – не возникнет проблем с зависимостями пакетов, использующих unixODBC, например можно будет без проблем установить MySQL Community ODBC Connector из его официального репозитория).

wget -O /etc/yum.repos.d/mssql-release.repo https://packages.microsoft.com/config/rhel/6/prod.repo
yum install unixODBC unixODBC-devel
 

Распаковываем скаченный ранее архив и устанавливаем ODBC-драйвер с помощью вложенного скрипта install.sh. Скрипт проверяет наличие в системе unixODBC именно версии 2.3.0, поэтому нужно использовать опцию –force, чтобы скрипт установил драйвер.

tar xf msodbcsql-11.0.2270.0.tar.gz
cd msodbcsql-11.0.2270.0
./install.sh install –force –accept-license

Опять-таки Asterisk нужно будет пересобрать после установки более нового пакета unixODBC.

 

Настройка ODBC-подключения в Asterisk
Создание ODBC DSN
Сперва нужно добавить DSN в файл /etc/odbc.ini. Формат DSN:

[<имя_DSN>]
Driver = <имя_драйвера_из_файла_/etc/odbcinst.ini>
Server = <адрес_сервера>
Port = <номер_порта>
Database = <имя_базы_данных>

Пример DSN:

[MS_SQL_ASTERISK]
Driver = ODBC Driver 17 for SQL Server
Server = sql.example.com
Port = 1433
Database = asterisk 

Поле Driver для других версий драйвера – «ODBC Driver 11 for SQL Server» и «ODBC Driver 13 for SQL Server» (можно установить все три версии и они все будут описаны в файле /etc/odbcinst.ini).

Протестировать DSN можно следующей командой:

isql MS_SQL_ASTERISK <имя_пользователя> <пароль>
 

Если с подключением возникают проблемы, можно временно добавить следующие параметры:

Trace = Yes
TraceFile = /tmp/MS_SQL_ASTERISK_ODBC.log 

В файл /tmp/MS_SQL_ASTERISK_ODBC.log будет записан лог подключения.

 

Создание ODBC-подключения в настройках Asterisk
ODBC-подключение нужно описать в файле /etc/asterisk/res_odbc.conf (если используете не совсем старый FreePBX – тогда в файле /etc/asterisk/res_odbc_custom.conf). Формат описания ODBC-подключения:

[<имя_ODBC-подключения>]
enabled => yes
dsn => <имя_DSN_из_файла_/etc/odbc.ini>
username => <имя_пользователя>
password => <пароль>
pre-connect => yes
max_connections => <максимальное_количество_одновременных_подключений> ; для Asterisk 12+
pooling => <максимальное_количество_одновременных_подключений> ; для Asterisk 11

MS SQL Server поддерживает одновременно только один запрос через одно соединение, поэтому можно указать более одного соединения, если планируется большая интенсивность запросов к БД.
Пример ODBC-подключения:

[ms_sql]
enabled => yes
dsn => MS_SQL_ASTERISK
username => db_user
password => db_secret
pre-connect => yes
max_connections => 3

Для применения настроек модуля res_odbc.so, нужно выполнить в CLI Asterisk команду

module reload res_odbc.so

или

module load res_odbc.so

если модуль ещё не был загружен.

 

 
avatar
1 Цепочка комментария
0 Ответы по цепочке
1 Последователи
 
Популярнейший комментарий
Цепочка актуального комментария
1 Авторы комментариев
Игорь Гончаровский Авторы недавних комментариев
  Подписаться  
новее старее большинство голосов
Уведомление о
Игорь Гончаровский
Участник

При разработке других приложений мы сталкивались с тем что при работе с MSSQL через unixODBC и драйвер от Microsoft существенно медленнее происходит чтение из БД. При использовании Realtime или func_odbc это может вызвать существенные задержки и дополнительную нагрузку.

Остались вопросы?

Я - Кондрашин Игорь, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices