erlang链接SQL Server使用ODBC方法,但在网络上仍是缺乏资料,本身折腾了2天才成功。如今特记录下来,以供你们借鉴。html
基本思路是 erlang odbcserver + unixodbc + freetds,本文彻底参考了Install ODBC and MS SQL Server Client for Erlang,你们能够移步看看。
mysql
1.SQL Server 2008安装git
网上安装SQL Server 2008不少,我参考的是Win7 系统上安装SQL Server 2008一步一步图解教程程序员
2.使用用户密码登录SQL Server 2008github
安装完成后,只能经过安装电脑上面的用户登录,不方便erlang链接,要添加用户和密码登录。我参考的是sqlServer没法使用SQL Server Authentication身份登录的解决方法sql
3.参考Install ODBC and MS SQL Server Client for Erlang安装驱动文件数据库
apt-get install freetds-bin freetds-dev tdsodbc
注意:我使用的是ubuntu系统,我也在centos安装freetds过,不过centos的官网没有收录freetds软件,要经过rpmforge来得到。你们绕道。ubuntu
4.编辑freetds.conf文件和/etc/odbc.ini文件centos
打开/etc/freetds/freetds.conf文件,找到egServer70关键字,把下面的ntmachine.domain.com改成你要链接的IP主机,例如192.168.0.95。网络
而后把/etc/odbc.ini里面的Servername改成egServer70.
而后像Install ODBC and MS SQL Server Client for Erlang里面,erlang能够经过odbc链接SQL Server 2008吧。
Install ODBC and MS SQL Server Client for Erlang里面没说要修改这2个地方,我当时就折腾了好久,致使一直没链接上。
5.ejabberd对SQL Server的事务支持。
在ejbberd里面,不像mysql有事务操做指令,对SQL Server的事务支持彻底是基于SQL Server的存储过程。
也就是说,编写一个SQL Server的存储过程,执行到SQL Server的一个数据库里面,而后erlang经过调用这个存储过程来完成事务的支持。你们仔细留意ejabberd项目里面的odbc_queries.erl就能够发现EXECUTE dbo.xxx等代码,这些就是调用SQL Server的存储过程。
之前没仔细用过SQL Server,如今发现SQL Server在使用方面仍是很方便的,对程序员很友好,就不知道实际上的性能等其余问题了。
2013-12-16补充:
6.数据乱码
在使用的过程当中遇到了乱码的状况,调试了好久才发现,原来在freetds里面就能够配置的。
在/etc/freetds/freetds.conf里面,首先是[global]块。在[global]下面添加下面配置选项就能够解决乱码问题。
client charset = UFT-8