Linux下經過ODBC鏈接SQL Server

一 測試環境sql

操做系統:  Fedora 8
數據庫:     SQLServer2000 installed in Windows Xp Professional,數據庫

                   數據庫有用戶sa,密碼是syth7777,數據庫文件是QJKZDB服務器

    注意:  1  MS歷來沒有提供過SQLServer for Linux,因此也不要去嘗試在Linux系統安裝SQLServer,可是能夠經過ODBC鏈接Windows系統的SQLServer數據庫;工具

                2  安裝的SQLServer2000是不會打開1433端口的,因此請Windows Xp 用戶在安裝完SQLServer以後必定裝上SQLServer SP3布丁,可使用命令netstat -a 來查看是否打開1433端口測試

                3  對於Windows Xp,缺省防火牆是不讓1433端口來通信的,因此必須關掉Windows的防火牆,不然總是鏈接不成功,但是最可氣的是在別的Windows機器使用SQLServer的命令isql可以訪問數據庫(不用關閉防火牆)。經過抓包工具發現根本就不經過1433端口通信,而是經過445或139內部端口通信呀,真要命呀,看來Windowns東西是好,可是也太霸道了呀!網站

                4  在Xp Sp2安裝SQLServer2000時必需要打chs_sql2ksp3.exe補丁,若是沒有這個補丁,telnet ip 1433會鏈接不了,固然從遠程客戶端鏈接不上,暈呀!ui

Linux系統的ODBC操作系統

               unixODBC-2.2.11.tar.gz ( http://www.unixodbc.org )設計

鏈接SQLServer或Sybase的驅動unix

              freetds-stable.tgz ( http://www.freetds.org/ )

二 安裝配置(必須在root下用戶安裝)

一、安裝unixODBC

# tar vxzf unixODBC-2.2.11.tar.gz
# cd unixODBC-2.2.11
# ./configure --prefix=/usr/local/unixODBC --enable-gui=no --enable-drivers=no --with-qt-dir=/usr/lib/qt-3.3
# make
# make install

如今的最新版本是2.2.12,我的用的是2.2.11(落伍了),下載地址 http://www.unixodbc.org/unixODBC-2.2.11.tar.gz 。unixODBC圖形界面貌似用Qt2.2作得,由於本人電腦裏裝的Qt3.3.8和Qt4.3.1,這裏就不編譯gui圖形界面了。


二、安裝freetds

# tar vxzf freetds-stable.tgz
# cd freetds-0.64
# ./configure --prefix=/usr/local/freetds --with-unixodbc=/usr/local/unixODBC --with-tdsver=8.0
# make
# make install

 

三、配置freetds   # cd /usr/local/freetds


# vi etc/freetds.conf 
修改如下的一段,並把;去掉
改好以後的內容: [global]
        # TDS protocol version
        tds version = 8.0

;[SQLServer2000]
;        host = 10.0.0.3
;        port = 1433
;        tds version = 8.0
;        client charset = UTF-8
 

其中的[SQLServer2000]表明在客戶端使用的服務器名稱(在tsql命令中要加入 -S SQLServer2000),host表明SQLServer服務器的IP地址,port表明端口.client charset 是客戶端使用的字符集, client charset 必需大於或等於服務端數據庫使用的字符集。


服務端數據庫是 MS SQL Server 2000,字符集是 GB2312。那麼client charset 能夠設置爲 GB2312(等於),GB18030(大於),UTF-8(大於),但不能設爲ISO-8859-1(小於), Shift_JIS(不等於).,因爲 UTF-8 是所由字符集的超集,所以設置爲 UTF-8 老是可行的。此外,FreeTDS的client charset不能設置爲 UTF16。這時目前該軟件設計的侷限,其官方網站稱,在將來版本中可能會增長對client charset UTF16的支持。

測試鏈接:

# /usr/local/freetds/bin/tsql -S 10.0.0.3 -U sa
locale is "zh_CN.UTF-8"
locale charset is "UTF-8"
Password: syth7777
1> quit
#


這說明安裝freetds成功

 

四、配置unixODBC

# cd /usr/local/unixODBC

向ODBC添加SQLServer驅動

# vi etc/odbcinst.ini

寫入以下內容:   [ODBC]
Trace           = Yes
TraceFile       = /tmp/sql.log
ForceTrace      = Yes
Pooling         = No

[SQLServer]
Description     = SQLServer
Driver          = /usr/local/freetds/lib/libtdsodbc.so
Setup           = /usr/local/freetds/lib/libtds.so
UsageCount      = 1
CPTimeout       = 5
CPReuse         = 5
FileUsage       = 1   

保存退出 
添加DSN
# vi etc/odbc.ini

寫入以下內容


[QJKZDB]
Driver          = SQLServer  
Description     = SQLServer
Server          = 10.0.0.3
Database        = QJKZDB
Port            = 1433   

注意Driver驅動要寫odbcinst.ini中的驅動名稱,Database是數據庫的名稱

保存並退出。

測試ODBC的鏈接


# bin/isql -v QJKZDB sa syth7777
SQL> quit
 

OK,測試經過

相關文章
相關標籤/搜索