erlang連接SQL Server使用ODBC方法,但在網(wǎng)絡(luò)上還是缺少資料,自己折騰了2天才成功?,F(xiàn)在特記錄下來,以供大家借鑒。
基本思路是
?erlang odbcserver + unixodbc + freetds,本文完全參考了
Install ODBC and MS SQL Server Client for Erlang
,大家可以移步看看。
1.SQL Server 2008安裝
網(wǎng)上安裝SQL Server 2008很多,我參考的是 Win7 系統(tǒng)上安裝SQL Server 2008一步一步圖解教程
?
?
2.使用用戶密碼登陸SQL Server 2008
安裝完成后,只能通過安裝電腦上面的用戶登陸,不方便erlang連接,要添加用戶和密碼登陸。我參考的是 sqlServer無法使用SQL Server Authentication身份登陸的解決方法
?
3.參考 Install ODBC and MS SQL Server Client for Erlang 安裝驅(qū)動文件
apt-get
install
freetds-bin freetds-dev tdsodbc
注意:我使用的是ubuntu系統(tǒng),我也在centos安裝freetds過,不過centos的官網(wǎng)沒有收錄freetds軟件,要通過rpmforge來獲得。大家繞道。
?
4.編輯freetds.conf文件和/etc/odbc.ini文件
打開/etc/freetds/freetds.conf文件,找到egServer70關(guān)鍵字,把下面的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個地方,我當(dāng)時就折騰了很久,導(dǎo)致一直沒連接上。
?
5.ejabberd對SQL Server的事務(wù)支持。
在ejbberd里面,不像mysql有事務(wù)操作指令,對SQL Server的事務(wù)支持完全是基于SQL Server的存儲過程。
也就是說,編寫一個SQL Server的存儲過程,執(zhí)行到SQL Server的一個數(shù)據(jù)庫里面,然后erlang通過調(diào)用這個存儲過程來完成事務(wù)的支持。大家仔細留意ejabberd項目里面的odbc_queries.erl就可以發(fā)現(xiàn) EXECUTE dbo.xxx等代碼,這些就是調(diào)用SQL Server的存儲過程。
以前沒仔細用過SQL Server,現(xiàn)在發(fā)現(xiàn)SQL Server在使用方面還是很方便的,對程序員很友好,就不知道實際上的性能等其他問題了。
?
2013-12-16補充:
6.數(shù)據(jù)亂碼
在使用的過程中遇到了亂碼的情況,調(diào)試了很久才發(fā)現(xiàn),原來在freetds里面就可以配置的。
在/etc/freetds/freetds.conf里面,首先是[global]塊。在[global]下面添加下面配置選項就可以解決亂碼問題。
client charset = UFT-
8
?
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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