之前測試過讓 Plone 使用 Postgresql ,這次則要來測試微軟的 SQL Server,而且是最新的 2008。

本文參考自 http://marrtw.blogspot.com/2008/03/zpyodbcda-with-mssql.html


環境準備
這次的環境為兩台主機,相關設定如下:

MS SQL Server 2008(EN)
Windows XP Professional
XP 已更新到 SP3,並且不開啟防火牆。SQL Server 2008算是比較麻煩的部分,最好是使用 Server 版的 windows 來安裝,使用 XP 安裝雖然有錯誤訊息,但還是可以正常使用。另外是使用者的問題,安裝的時候會讓你選擇可以使用 SQL Server 的使用者,在本機使用時問題不大,但是一但要遠端連線時則都沒有成功連線過。後來使用 sa 這個帳號才行,而且新版的 SQL Server 不允許使用空白密碼,也就是一定要修改 sa 的密碼才能使用 sa 來登入。

另外,SQL Server 預設是不開放遠端連線,所以要先去修改設定讓他能接受對外連線,請依圖開啟 SQL Server 的設定介面:

8.png



依圖打開 TCP/IP的設定介面:

9.png



打開介面後點選 IP Addresses,看看 Enabled 選項是不是設為 Yes,預設應該是 NO ,請改成 Yes。另外看看有沒有甚麼選項有問題。如果你有修改 IP 在這邊也要跟著,這裡不會動態的跟你的設定跑。修改完設定必須要讓 SQL Server 重新啟動才會套用新的設定。


10.png



Plone-3.2
CentOS-5.3
Plone 則裝在 Linux 上,基本上沒甚麼大問題,主要是安裝下面套件。



所需套件


系統
Freetds-0.82
unixODBC

Plone
pyodbc
ZPyODBCDA

底下將介紹安裝方式。


安裝 unixODBC

unixODBC 可使用 yum 來安裝,關鍵字為 unixODBC 與 unixODBC-devel:

[root@centostest etc]# yum install unixODBC
[root@centostest etc]# yum install unixODBC-devel



安裝 Freetds

下載軟體:http://www.freetds.org/
參考文件:http://www.unixodbc.org/doc/FreeTDS.html


安裝步驟


下載之後將檔案解壓縮

[root@centostest temp]# tar zxvf freetds-stable.tgz


切換到該目錄底下

[root@centostest temp]# cd freetds-0.82/


依序執行下面的編譯指令,要注意有沒有錯誤訊息

[root@centostest freetds-0.82]# ./configure --with-tdsver=8.0
[root@centostest freetds-0.82]# make
[root@centostest freetds-0.82]# make install


安裝完之後在 /usr/local/etc 下會有 freetds 的設定檔案,我們要修改一下 /usr/local/etc/freetds.conf 這個檔案,加入一些選項讓他能連結 SQL Server:

[MSSQLSERVER]            標題,因為我要連的是 MSSQL 所以我就這樣寫了
        host = XPSP3        主機名稱,這個名稱必須能讓你的主機可以解析的到
        port = 1433        SQL 使用的 port,SQL Server 一般都為 1433
        tds version = 8.0    tds 所使用的版本

詳細設定請參考:http://www.freetds.org/userguide/freetdsconf.htm


接著可以使用 tsql 來測試連接 SQL Server,tsql 參數如下:
-S    主機名稱
-U    使用者名稱
其他更多選項可以輸入 tsql 不加參數就會列出其他選項。底下是我測試連結 SQL Server 的結果,如果成功會如下面出現 1> 等待輸入指令的樣子,如果有問題的話會出現如 There was a problem connecting to the server  的訊息:

[root@centostest etc]# tsql -S XPSP3 -U sa
locale is "en_US.UTF-8"
locale charset is "UTF-8"
Password:
1>


建立 driver 與 data source


接著要建立 driver 與 data source ,讓 unixODBC 可以透過 freetds 去連接 MS SQL Server:


建立 driver

新增一個名為 tds.driver.template ,內容如下:

[FreeTDS]
Description     = v0.82 with protocol v8.0
Driver          = /usr/local/lib/libtdsodbc.so.0.0.0



接著使用  odbcinst -i -d -f tds.driver.template 來註冊這個 driver,成功會如下所示:

[root@centostest temp]# odbcinst -i -d -f tds.driver.template
odbcinst: Driver installed. Usage count increased to 1.
    Target directory is /etc


再來是建立 datasource,一樣新增一個 tds.datasource.template 檔案,並輸入如下:

[MSSQLSERVER]
Driver          = FreeTDS
Description     = SQL Server Test
Trace           = No
Server          = 192.168.1.99
Port            = 1433
Database        = Plone

一樣使用 odbcinst -i -s -f tds.datasource.template 來建立一個 data source:

[root@centostest temp]# odbcinst -i -s -f tds.datasource.template


接著可以使用 isql 來測試,isql 不加任何參數的話會列出選項說明,簡易使用如下,-v 後面接 datasource 的標題也就是 MSSQLSERVER,接著接的是 使用者名稱與密碼,成功執行如下:


[root@centostest temp]# isql -v MSSQLSERVER sa secret
+---------------------------------------+
| Connected!                               |
|                                               |
| sql-statement                           |
| help [tablename]                      |
| quit                                         |
|                                               |
+---------------------------------------+
SQL>



系統方面的設定好了,接著則是 Plone,Plone 要安裝兩個東西:


pyodbc

網址:http://github.com/mkleehammer/pyodbc/tree/master
下載網址:http://github.com/mkleehammer/pyodbc/tarball/master

下載後一樣先將其解壓縮:

[root@centostest temp]# tar zxvf mkleehammer-pyodbc-31e2fae4adbf1b2af1726e5668a3414cf46b454f.tar.gz


他的安裝指令為  python setup.py build install,但是要注意,因為我們是要裝在 Plone 裡的,所以要改成:

[root@centostest mkleehammer-pyodbc-31e2fae4adbf1b2af1726e5668a3414cf46b454f]# /usr/local/Plone/Python-2.4/bin/python setup.py build install



ZPyODBCDA


網址:http://code.google.com/p/zpyodbcda/
下載網址:http://code.google.com/p/zpyodbcda/downloads/list

這是 Plone 的套件,讓 Plone 能夠新增其他資料庫的連結。安裝方式很簡單,將檔案下載回來之後解壓縮,把目錄放到 /Plone安裝路徑/zeocluster/products/,這在裡的話就是 /usr/local/Plone/zeocluster/products/。再來重新啟動 Plone ,輸入 http://Ploneaddress/manage 到 ZMI 裡,就能在 Add 項目找到  ZPyODBC DataBase Connection。


1.jpg



新增 SQL Server 2008 連結

在網址列輸入 http://Ploneaddress/manage 到 ZMI 介面,並點選 ZPyODBC DataBase Connection 到設定介面去:



2.png


基本上所有設定照預設即可,最重要是那個 ODBC Connection String 選項,這也就是最主要的設定,我使用的是:

DRIVER={FreeTDS};SERVER=localhost;DATABASE=testdb;UID=me;PWD=pass

注意 DRIVER 要改成 FreeTDS 而不是原本的 SQL Server 。其他的選項就按照各自的設定填入即可。

成功新增後會再跟目錄看到該項目,如下圖:


3.png


他的設定頁面如下:


4.png


來測試一下,點一下 Test 頁面,在這裡可以作一些 query 的測試。

5.png


結果,因為我的資料表裡沒有任何東西,所以會回傳沒有資料:


6.png


如果有錯誤,會出現類似下面的畫面


7.png


f
創作者介紹
創作者 xiangyang17 的頭像
xiangyang17

xiangyang17

xiangyang17 發表在 痞客邦 留言(0) 人氣()