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
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
