Search This Blog

Friday, October 5, 2018

Using Microsoft SQL Server from Linux Machines with ODBC & FreeTDS

FreeTDS က Unix နဲ့ Linux စက်တွေ အတွက် Microsoft SQL Server နဲ့ Sybase databases တွေကို ဆက်သွယ် အသုံးပြု ရတဲ့ လိုင်ဘရီ တွေ ဖြစ်ပါတယ် [Fre16]။ FreeTDS C libraries တွေက free, opensource ဖြစ်ပြီး GNU LGPL လိုင်စင် ဖြစ်ပါတယ်။ ဒီ အပိုင်း မှာ Windows စက် တစ်ခု ခု မှာရှိတဲ့ mixed mode authentication နဲ့ တပ်ဆင် ထားတဲ့ MS SQL server ကို Linux စက် ကနေ FreeTDS နဲ့ ဆက်သွယ် အသုံးပြု တဲ့ အကြောင်း ဆွေးနွေး ပါမယ်။ MS SQL server က TCP/IP နဲ့ remote ဆက်သွယ်မှု ကို ခွင့်ပြု ထားပြီး၊ username နဲ့ password ကို အသုံးပြုပြီး ဆက်သွယ် နိုင်ဖို့ လိုပါတယ်။

MS SQL server က Microsoft နဲ့ Sybase တို့ ပူးပေါင်း ဆောက်ရွက်မှု ကနေ မွေးဖွား လာတာ ဖြစ်ပါ တယ်။ ဒါကြောင့် သူ့တို့ ရဲ့ SQL server တွေက ဆင်တူ ကြပြီး၊ client တွေက နေလှမ်း ဆက်သွယ် အသုံးပြု တဲ့ communication protocol က စ ထပ်တူ နီးပါး တူညီ ပါတယ်။ အဲဒီ protocol ကို Tabular Data Stream (TDS) လို့ ခေါ်ပါတယ်။ TDS ကို open source အနေနဲ့ implementation လုပ်တဲ့ project ကို Brian Bruns စတင်ခဲ့ ပြီး၊ FreeTDS လို့ နာမည် ပေးခဲ့ တာပါ။

  1. Installation
  2. Testing
  3. အကိုးအကားများ


Installation

FreeTDS ကို အောက်ပါ အတိုင်း တပ်ဆင် နိုင် ပါတယ်။

$ sudo apt update
$ sudo apt install unixodbc unixodbc-dev 
$ sudo apt install freetds-dev freetds-bin tdsodbc


တပ်ဆင် ပြီးတဲ့ unixODBC version ကို အောက်က အတိုင်း စစ်နိုင် ပါတယ်။

$ odbcinst --version


Configuration



unixODBC က သုံးမယ့် ODBC driver ကို သိဖို့ လိုတဲ့ အတွက် register လုပ်ပေးဖို့ လိုပါတယ်။ အဲဒီ အတွက် /etc/odbcinst.ini ဆိုတဲ့ ဖိုင်ကို edit လုပ်ပြီး

$ sudo nano /etc/odbcinst.ini


အောက်က အတိုင်းဖြည့်လိုက် ပါမယ်။

[FreeTDS]
Description = FreeTDS v0.91 with protocol v7.3
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so


အဲဒီ Driver path က desktop စက်တွေ အတွက် ပါ။ ARM based SBC တွေ အတွက်ဆိုရင်

/usr/lib/arm-linux-gnueabihf/odbc/libtdsodbc.so


ဖြစ်ပါတယ်။ Driver တွေကို အောက်က အတိုင်း စစ်နိုင် ပါတယ်။

$ odbcinst -q -d


ODBC client application တွေက ODBC Data Source Name (DSN) ကို သုံးပြီး အလုပ်လုပ် လေ့ ရှိတာမို့၊ /etc/odbc.ini ထဲမှာ DSN တွေကို သတ်မှတ် နိုင် ပါတယ်။

$ sudo nano /etc/odbcinst.ini


ဥပမာ အနေနဲ့ mssqlserver ဆိုတဲ့ DSN တစ်ခုကို ဖန်တီး ပြီး Connection attributes (http://www.freetds.org/userguide/odbcconnattr.htm) တွေကို အောက်က အတိုင်း သတ်မှတ် ပါမယ် [Abb06] Driver အတွက် ခုနက သတ်မှတ် ခဲ့တဲ့ driver ဒါမှ မဟုတ် တိုက်ရိုက် path ကို သတ်မှတ် နိုင် ပါတယ်။ Database အတွက် mytest ဆိုတဲ့ နမူနာ database တစ်ခု ကို သတ်မှတ်လိုက် ပါတယ်။

[mssqlserver]
Driver = FreeTDS
Description = Test database
Trace = No
Server = 192.168.1.2
Port = 1433
TDS_Version = 7.3
Database = mytest


ရှိတဲ့ data sources တွေကို အောက်က အတိုင်း list လုပ်နိုင် ပါတယ်။

$ odbcinst -q -s


Testing

Database ကို စမ်းသပ် အသုံးပြုဖို့ အတွက် unixODBC မှာ tools တွေ ပါဝင်ပြီး၊ isql ဆိုတဲ့ command line tool ကို သုံးလိုက် ပါမယ်။ ခုန က ဖန်တီး ခဲ့တဲ့ mssqlserver ဆိုတဲ့ DSN ကို ဆက်သွယ် ဖို့ အတွက် အောက်က command ကို သုံးနိုင် ပါတယ်။ SQL> ဆိုတဲ့ prompt ကို ရောက်သွား ရင် SELECT * FROM tablename စတဲ့ sql command တွေကို စမ်းသပ် အသုံးပြု နိုင် ပါပြီ။

$ isql -v mssqlserver  
SQL>


Acknowledgement



FreeTDS နဲ့ မိတ်ဆက် ပေးပြီး၊ စ အသုံးပြုဖို့ အတွက် လည်း အကူအညီ တွေပေး ခဲ့တဲ့ ကျွန်တော့် ရဲ့ လုပ်ဖော် ကိုင်ဖက် ချီချုန်း ကို ကျေးဇူး တင်တဲ့ အကြောင်း ပြောချင် ပါတယ်။

အကိုးအကားများ



[Fre16] FreeTDS. FreeTDS - Making the leap to SQL Server. 2016.
url: http://www.freetds.org/.

[Abb06] Bob Abbott. unixODBC - MS SQL Server/PHP - with specifics for Red Hat/Fedora Linux Core 4 and Apache. 2006.
url: http://www.unixodbc.org/doc/FreeTDS2.html.