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

Запись cdr в базу MS SQL

Добавлено: 10 авг 2015, 11:14
jdoe
Всем доброго дня.
Беглый поиск по форуму не дал результатов, если было ткните пальцем.
Хочу заставить elastix 2.5 писать данные о звонках не только в mysql но и в базу mssql.
Что сделано:

Установлен FreeTDS Ver. 0.91

Добавлено в /etc/odbcinst.ini

Код: Выделить всё

[FreeTDS]
Description     = FreeTDS ODBC driver for MSSQL
Driver          = /usr/lib64/libtdsodbc.so.0
Setup           = /usr/lib64/libtdsS.so.1
Driver64        = /usr/lib64/libtdsodbc.so.0
Setup64         = /usr/lib64/libtdsS.so.1
FileUsage       = 1
#UsageCount     = 1
#Threading      = 2
в /etc/odbc.ini

Код: Выделить всё

[MSSQL-asterisk]
description     = Asterisk FreeTDS ODBC driver for MSSQL
driver          = FreeTDS
server          = 192.168.xx.xx
port            = 1433
database        = asteriskcdrdb
username        = asterisk
#user            = asterisk
password        = astdbpassword
tds_version     = 8.0
language        = us_english
в /etc/asterisk/res_odbc_custom.conf

Код: Выделить всё

[mssql-asteriskcdrdb]
enabled => yes
dsn => MSSQL-asterisk
pre-connect => yes
в /etc/asterisk/cdr_odbc.conf

Код: Выделить всё

[global]
dsn=MSSQL-asterisk
table=cdr
loguniqueid=yes
;usegmtime=no
;hrtime=yes
С консоли Asterisk'а

Модули ODBC загружены
pbx*CLI> module show like odbc

Код: Выделить всё

Module                         Description                              Use Count
cdr_adaptive_odbc.so           Adaptive ODBC CDR backend                0
cdr_odbc.so                    ODBC CDR Backend                         0
cel_odbc.so                    ODBC CEL backend                         0
func_odbc.so                   ODBC lookups                             0
res_config_odbc.so             Realtime ODBC configuration              0
res_odbc.so                    ODBC resource                            0
6 modules loaded

Бэкенд odbc есть
pbx*CLI> cdr show status

Код: Выделить всё

Call Detail Record (CDR) settings
----------------------------------
  Logging:                    Enabled
  Mode:                       Simple
  Log unanswered calls:       No
  Log congestion:             No

* Registered Backends
  -------------------
    mysql
    cdr_sqlite3_custom
    cdr-custom
    csv
    Adaptive ODBC
    ODBC

DSN Asterisk видит и даже вроде как подключается к базе
pbx*CLI> odbc show all

Код: Выделить всё

ODBC DSN Settings
-----------------

  Name:   mssql-asteriskcdrdb
  DSN:    MSSQL-asterisk
    Last connection attempt: 2015-08-10 10:18:29

  Name:   asteriskcdrdb
  DSN:    MySQL-asteriskcdrdb
    Last connection attempt: 2015-08-10 10:18:29
База соответственно тоже создана на MS SQL 2008R2

При окончании звонка в логах следующее:

Код: Выделить всё

[2015-08-10 10:21:05] ERROR[4332][C-00000003] cdr_odbc.c: Unable to retrieve database handle.  CDR failed.
Куда смотреть не могу понять, т.к. ошибка не дает никакой конкретики.
Прошу о помощи.

Elastix 2.5 (в дистрибе About Elastix 2.4.0-19)
CentOS release 5.10 (Final)
FreeTDS Ver. 0.91
unixODBC Ver. 2.2.11

Re: Запись cdr в базу MS SQL

Добавлено: 10 авг 2015, 13:46
jdoe
UPD.

При рестарте asterisk'а в логах:

Код: Выделить всё

[2015-08-10 13:39:06] NOTICE[4780] res_odbc.c: Connecting mssql-asteriskcdrdb
[2015-08-10 13:39:06] WARNING[4780] res_odbc.c: res_odbc: Error SQLConnect=-1 errno=0 [unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[2015-08-10 13:39:06] WARNING[4780] res_odbc.c: Failed to connect to mssql-asteriskcdrdb
[2015-08-10 13:39:06] NOTICE[4780] res_odbc.c: Registered ODBC class 'mssql-asteriskcdrdb' dsn->[MSSQL-asterisk]
[2015-08-10 13:39:06] NOTICE[4780] res_odbc.c: Connecting asteriskcdrdb
[2015-08-10 13:39:06] WARNING[4780] res_odbc.c: res_odbc: Error SQLConnect=-1 errno=0 [unixODBC][Driver Manager]Data source name not found, and no default driver specified
[2015-08-10 13:39:06] WARNING[4780] res_odbc.c: Failed to connect to asteriskcdrdb
[2015-08-10 13:39:06] NOTICE[4780] res_odbc.c: Registered ODBC class 'asteriskcdrdb' dsn->[MySQL-asteriskcdrdb]
Хотя в MySql логи точно пишет.

Re: Запись cdr в базу MS SQL

Добавлено: 18 сен 2015, 07:53
Pegasus
День добрый.
Решили проблему?

Если ещё нет, то логи скуля и isql на астере в помощь. Чаще всего бывает, что или имя/пароль пользователя передаются как-то не так, или у пользователя нет прав на какое-то действие на SQL сервере.