Ubuntu下erlang鏈接SQL SERVER 2008

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
相關文章
相關標籤/搜索