星期五, 1月 16, 2009

在GNU/Linux連MS SQL資料庫

1.安裝 tdsodbc、freetds-bin、libsybdb5、freetds-common、unixodbc

2.執行 TDSVER=8.0 tsql -H ser.ver.ip.1 -p 1433 -U username -P password (測試freetds,OK 出現 "1>" )

3.編輯 /etc/freetds.conf
[server_ts]
host = ser.ver.ip.1
port = 1433
tds version = 8.0
client charset = UTF-8

4.執行 tsql -S server_ts -U username -P password (測試 freetds.conf 設定)

5.編輯 /etc/odbcinst.ini (預設即可,記住[ms_sql]標簽)
[ms_sql]
Description = TDS driver (Sybase/MS SQL)
Driver = /usr/lib/odbc/libtdsodbc.so
Setup = /usr/lib/odbc/libtdsS.so
CPTimeout =
CPReuse =

6.編輯 /etc/odbc.ini
[DSNname]
Description = test database
Driver = ms_sql -------------------------->odbcinst.ini中的標簽
Servername = server_ts ------------------>freetds.conf中的標簽
;Server = ser.ver.ip.1 ---------------->如不使用Servername就要使用Server和Port但中文有問題,在這指定client charset 沒有用
;Port = 1433
Database = databasename

7.執行 isql -v DSNname username password (測試odbc.ini設定,出現 "sql>" 即可)

8.如在odbc.ini中使用Servername方式不行而使用Server加Port方式可以,表示isql找不到freetds.conf
可能要執行 ln -s /etc/freetds.conf /usr/local/etc/freetds.conf


補充64位元版本
/etc/odbcinst.ini內改為
Driver64=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup64=/usr/lib/x86_64-linux-gnu/odbc/libtdsS.so