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

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