Ubuntu下erlang連接SQL SERVER 2008

erlang连接SQL Server使用ODBC方法,但在网络上还是缺少资料,自己折腾了2天才成功。现在特记录下来,以供大家借鉴。

基本思路是 erlang odbcserver + unixodbc + freetds,本文完全参考了Install ODBC and MS SQL Server Client for Erlang,大家可以移步看看。

1.SQL Server 2008安装

网上安装SQL Server 2008很多,我参考的是Win7 系统上安装SQL Server 2008一步一步图解教程

 

 

2.使用用户密码登陆SQL Server 2008

安装完成后,只能通过安装电脑上面的用户登陆,不方便erlang连接,要添加用户和密码登陆。我参考的是sqlServer无法使用SQL Server Authentication身份登陆的解决方法

 

3.参考Install ODBC and MS SQL Server Client for Erlang安装驱动文件

apt-get install freetds-bin freetds-dev tdsodbc

注意:我使用的是ubuntu系统,我也在centos安装freetds过,不过centos的官网没有收录freetds软件,要通过rpmforge来获得。大家绕道。

 

4.编辑freetds.conf文件和/etc/odbc.ini文件

打开/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

 

 

 

更多相关文章
一周排行
  • Node.js安装与配置      Node.js已经诞生两年有余,由于一直处于快速开发中,过去的一些安装配置介绍多数针对0.4.x版本而言的,并非适合最新的0.6.x的版本情况了,对此,我们将在0.6.x的版本上介 ...
  • There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays.
  • Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary tree is
  • Follow up for "Remove Duplicates":What if duplicates are allowed at most twice? For example,Given ...
  •   这并不是一篇关于 In-App-Purcharse 的专业深入分析文章,只是在初次浏览有关IAP官方文档后记录的一些需要注意的地方,就像是课堂笔记. 因为这是原版.并且涉及到支付的内容,所以就不翻译,以免引起歧义
  • 数据库表: -- Create table DROP TABLE CUX.cux_ap_invoice_interface; create table CUX.cux_ap_invoice_interface ( O ...
  • 本文为记录Python下载samba里的文件的代码: from smb.SMBConnection import SMBConnection def get_script_file(): conn = SMBConn
  • TUXEDO名字的由来:Transaction for UNIX has been Extended for Distributed Operation,即被分布式操作扩展之后的UNIX事务系统 . 最早具有中间件技
  • 1mybatis开发dao的方法 1.1SqlSession作用范围 是使用局部变量.成员变量,还是形参? 1.1.1SqlSessionFactoryBuilder SqlSessionFactoryBuilder
  • Execute Sql Task 執行有參數的存儲過程
    Execute Sql Task 执行有参数的存储过程时,传递参数的方式是不同的,根据使用