Asterisk CDR向MSSQL报告

时间:2015-02-17 20:02:58

标签: linux centos asterisk unixodbc

我应该从我们的Asterisk SIP服务器实现后端Microsoft SQL连接以获取CDR报告。披露:我是Asterisk的新手,我不熟悉它最初是如何设置的,而且我在Linux(CentOS)环境中的经验有限。

我一直关注此处的链接:http://www.asteriskdocs.org/en/3rd_Edition/asterisk-book-html-chunk/installing_configuring_odbc.html

我安装了FreeTDS驱动程序,并使用以下命令验证它们是否可见:

]# odbcinst -q -d
[FreeTDS]

在/etc/odbc.ini里面我有以下定义的连接器:

[asterisk-connector]
Description = MSSQL connection to 'asterisk' database
Driver = FreeTDS
Database = Asterisk
Address = x.x.x.x
Port = 52199
UserName = <username here>
Password = <password here>
Trace = No
TDS_Version = 7.0

之后的步骤是验证您是否可以使用带有'isql'命令的指定连接器连接到数据库...但是,当我输入“isql -v asterisk-connector”时,我收到错误:

]# isql -v asterisk-connector
[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[28000][unixODBC][FreeTDS][SQL Server]Login incorrect.
[][unixODBC][FreeTDS][SQL Server]Login failed for user ''. The user is not associated with a trusted SQL Server connection.
[ISQL]ERROR: Could not SQLConnect

当我输入命令并在命令行指定用户名和密码时,它可以连接!

]# isql -v asterisk-connector <username here> <password here>
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

我的问题: 为什么它不会选择我在odbc.ini中定义的用户名和密码?

此外,之后的步骤是重新编译星号源文件,但服务器上没有Asterisk 1.8的源文件。就像我之前提到的,我不知道Asterisk最初是如何在这台服务器上安装和设置的。

有没有办法可以获取Asterisk的源文件并重新编译它们以使用已安装和运行的内容? 如果是,它会删除我们的电话系统中当前定义的所有内容,例如分机,振铃组,IVR等吗?

任何帮助将不胜感激! 如果您需要其他信息,请告诉我,我可以检索它。我不知道需要多少信息。

1 个答案:

答案 0 :(得分:0)

Freetds驱动程序正常使用mssql

但是请注意,它对于不同的mssql版本有不同的驱动程序模式(请参阅freetds.conf)

Asterisk也可以使用mssql,我做了两次。

您可以使用这篇文章

https://technet.microsoft.com/en-us/library/hh568454%28v=sql.110%29.aspx

有用的选项是跟踪文件。

最有可能你需要使用UID而不是用户名或类似的东西。

注意,星号在res_config_odbc.conf文件中也有用户名和密码。所以你可以尝试使用它(并在使用后检查跟踪)

重新编译不会影响您的任何设置,除非您做&#34;制作样本&#34;或者不编译所需的模块。