Страница 1 из 1

работа модуля freetds с подключением к MS SQL

СообщениеДобавлено: 09 ноя 2017, 16:50
janetland
Привет всем.
Сталкивался кто с работой модуля
Код: выделить все
pkg_info | grep freetds
freetds-0.64_9,1    Sybase/Microsoft TDS protocol library

и одновременной записью в базы mysql, mssql?

Нужна подсказка на тему, почему при включенных настройках в extconfig.conf
Код: выделить все
queue_log => mysql,general,queues
queue_log => odbc,mssql-asteriskcdrdb,queues

не происходит записи в таблицу asterisk.queues
Стоит закомментировать строку queue_log => odbc,mssql-asteriskcdrdb,queues все ок пишется. Подозрение на какой-то приоритет записи, что-то вида: если есть odbc пишу только туда? (пробовал менять порядок строк, строка записи в mysql стоит первой, все равно пишет только в MS SQL. Не умеет писать одновременно 2 потока? Странно, т.к. cdr и cel пишутся на оба сервера без проблем, да и в сети куча примеров с подобной конфигурацией. Может быть сталкивался кто?

Re: работа модуля freetds с подключением к MS SQL

СообщениеДобавлено: 09 ноя 2017, 17:39
janetland
хм похоже это https://www.asterisk-pbx.ru/wiki/asterisk/cf/extconfig.conf оно

Код: выделить все
Конфигурация вызывает заданное семейство реалтайм в формате: драйвер базы данных, имя категории из конфига драйвера res_<driver>, таблица БД, приоритет (если таблица не задана, будет использовано имя семейства (family)): family => Driver DB,category DB res_...conf[,Table][,prioritet]

Приоритет - необязательный параметр , применяется в случае ошибки получения данных. Если соединению с приоритетом 1 не удалось получить данные, будет произведена попытка получить данные через соединение с приоритетом 2. Приоритеты должны быть упорядочены: 1,2,3, но не 1,2,4


Получается, что одновременной записи в обе базы не будет, только в случае недоступности сервера - будем писать в другое место?

Re: работа модуля freetds с подключением к MS SQL

СообщениеДобавлено: 09 ноя 2017, 18:37
janetland
хм, поставил следующие приоритеты, пишет в обе базы нормально
Код: выделить все
queue_log => odbc,mssql-asteriskcdrdb,queues,1
queue_log => mysql,general,queues,2

Будем тестировать дальше...

Re: работа модуля freetds с подключением к MS SQL

СообщениеДобавлено: 20 ноя 2017, 17:31
janetland
Подводя итог:

- * нужно пересобирать с поддержкой freetds, чисто unixODBC см коннектом к mssql работает нестабильно (демон * падает в разных местах)
- необходимо обращать внимание на ms sql структуру базы, она отличается очередностью полей от аналогичной mysql как и типом данных, например, для корректной работы mssql 2008r2 в таблицу cdr необходимо добавить 3 поля и изменить тип данных. Не советую пользоваться "Microsoft SQL Server Migration Assistant for MySQL" лучше пробегитесь по структуре и найдите подобный тип данных.
- проверяем наличие загруженных модулей и консольный коннект к базе
- после каждого изменения таблиц mssql и odbc.ini рестартим *
- для лога 2х и более баз важна очередность в extconfig.conf, если не указать - писать будет в одну рендомно-любую базу

Код: выделить все
queue_log => odbc,mssql-asteriskcdrdb,queues,1
queue_log => mysql,general,queues,2