Linux下通過ODBC連線SQL Server

2021-06-20 03:25:33 字數 3271 閱讀 5971

一 測試環境

作業系統:  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會連線不了,當然從遠端客戶端連線不上,暈呀!

linux系統的odbc

unixodbc-2.2.11.tar.gz ( 

連線sqlserver或sybase的驅動

freetds-stable.tgz ( 

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

1、安裝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

。unixodbc圖形介面貌似用qt2.2做得,因為本人電腦裡裝的qt3.3.8和qt4.3.1,這裡就不編譯gui圖形介面了。

2、安裝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

3、配置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成功

4、配置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,測試通過

Debian通過ODBC連線Mysql

被網上的原始碼安裝坑了2天,積累了不少經驗,可惜還是未能成功。總結出乙個道理,新事物一定要看官方與非官方的api。下面是在debian系統上使用odbc連線mysql的操作步驟,需要的童鞋請拿走 前言 本次操作基於純淨debian作業系統,因為我才重灌了。1 安裝unixodbc 網上都說原始碼安裝...

PHP中通過ODBC連線SQL Server資料庫

現象 解決方案 查詢了很多的原因也沒有獲得可以通過 mssql connect 訪問另一台 sql server 老是報告 unable to connect to server 網上有人說可以通過 odbc 的方式訪問 sql server 因此嘗試著修改了一下,果然有效,雖然速度差了些。解決方案...

PB 通過ODBC或OLEDB連線ACCESS

pb 通過odbc或oledb連線access 1.odbc 1.1 建立odbc資料來源 1.2 profile sqlca.dbms odbc sqlca.autocommit false sqlca.dbparm connectstring dsn xtktv uid admin pwd 00...