artem
11.04.2018
2201

Подключение 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

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

 

Подписаться
Уведомление о
guest
1 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Игорь Гончаровский
Игорь Гончаровский
21.11.2019 05:10

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

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

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

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

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

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

ONLINE

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.