劉江濤
摘要:文章介紹了基于SQL Server的鏈接服務(wù)器對(duì)Sybase數(shù)據(jù)庫(kù)的訪問(wèn),并結(jié)合具體應(yīng)用介紹了這種方法的實(shí)現(xiàn)過(guò)程。關(guān)鍵詞:SQL Server;鏈接服務(wù)器;Sybase
中圖分類(lèi)號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)23-5541-04
SQL Server是由美國(guó)Microsoft公司開(kāi)發(fā)的,是一個(gè)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。它最初是由Microsoft和Sybase與Ashton-Tate三家公司共同開(kāi)發(fā)的,在1988年推出了第一個(gè)OS/2版本。后來(lái),Microsoft專(zhuān)注于開(kāi)發(fā)推廣SQL Server的Windows NT版本,并不斷地進(jìn)行版本更新,SQL Server已逐漸發(fā)展成為被用戶(hù)廣泛使用的四大數(shù)據(jù)庫(kù)管理系統(tǒng)之一,現(xiàn)在普遍使用的SQL Server數(shù)據(jù)庫(kù)的版本有:SQL Server 2000,SQL Server 2005,SQL Server 2008。
筆者在開(kāi)發(fā)公司的生產(chǎn)管理系統(tǒng)時(shí),是用Delphi6+ SQL Server 2000來(lái)實(shí)現(xiàn)的,系統(tǒng)已經(jīng)穩(wěn)定運(yùn)行了六年多。在此期間,根據(jù)用戶(hù)的需要進(jìn)行了不斷的完善和功能擴(kuò)充。隨著公司對(duì)系統(tǒng)整合的推進(jìn)和滿(mǎn)足生產(chǎn)管理的需要,公司的各個(gè)管理系統(tǒng)要進(jìn)行數(shù)據(jù)交換,實(shí)現(xiàn)數(shù)據(jù)共享。而其中的采購(gòu)管理系統(tǒng)的數(shù)據(jù)庫(kù)是Sybase數(shù)據(jù)庫(kù),如果要在前臺(tái)訪問(wèn)需要安裝很多個(gè)Sybase客戶(hù)端,實(shí)現(xiàn)起來(lái)非常麻煩,如果能在服務(wù)器端進(jìn)行訪問(wèn),不需要改變用戶(hù)客戶(hù)端的配置來(lái)實(shí)現(xiàn)就是一個(gè)比較好的選擇。
該文就是講述如何在SQL Server數(shù)據(jù)庫(kù)端來(lái)實(shí)現(xiàn)對(duì)Sybase數(shù)據(jù)庫(kù)訪問(wèn)的方法,并以公司生產(chǎn)管理系統(tǒng)的具體應(yīng)用為例做了具體的闡述,對(duì)于廣大使用SQL Server進(jìn)行開(kāi)發(fā)的人員具有一定的指導(dǎo)意義。
1工作原理
SQL Server對(duì)異構(gòu)數(shù)據(jù)庫(kù)的訪問(wèn)是通過(guò)分布式查詢(xún)來(lái)實(shí)現(xiàn)的。SQL Server提供了鏈接服務(wù)器用于分布式查詢(xún)異構(gòu)數(shù)據(jù)庫(kù)。通過(guò)鏈接服務(wù)器可以鏈接到Oracle、Sybase、DB2、SQL Server等大型關(guān)系數(shù)據(jù)庫(kù),也可以連接到Access、Excel等文件數(shù)據(jù)庫(kù),甚至可以連接到目錄服務(wù)(AD)、索引服務(wù)等。要鏈接到一種數(shù)據(jù)庫(kù)需要使用相應(yīng)的接口。微軟為很多數(shù)據(jù)庫(kù)提供了驅(qū)動(dòng)接口,所以可以直接使用,但是對(duì)于沒(méi)有提供驅(qū)動(dòng)的數(shù)據(jù)庫(kù)比如Sybase,則需要結(jié)合使用開(kāi)放式數(shù)據(jù)庫(kù)連接(ODBC)應(yīng)用編程接口(API)和Microsoft分布式事務(wù)協(xié)調(diào)器(MS DTC)來(lái)實(shí)現(xiàn)。
2實(shí)現(xiàn)對(duì)Sybase數(shù)據(jù)庫(kù)的訪問(wèn)
如果要對(duì)Sybase數(shù)據(jù)庫(kù)的訪問(wèn),需要在每個(gè)訪問(wèn)Sybase數(shù)據(jù)庫(kù)的用戶(hù)的計(jì)算機(jī)上安裝Sybase客戶(hù)端,如果用戶(hù)的使用量比較大的話,就給應(yīng)用程序的安裝、使用和維護(hù)帶來(lái)極大的不便。我們現(xiàn)在通過(guò)在SQL Server數(shù)據(jù)庫(kù)服務(wù)器上安裝Sybase客戶(hù)端,通過(guò)在SQL Server數(shù)據(jù)庫(kù)上創(chuàng)建鏈接服務(wù)器來(lái)實(shí)現(xiàn)從SQL Server到Sybase的訪問(wèn),原來(lái)的生產(chǎn)管理系統(tǒng)用戶(hù)的客戶(hù)端環(huán)境不需要作任何的改變。下面具體介紹實(shí)現(xiàn)的過(guò)程。
2.1安裝Sybase客戶(hù)端
在SQL Server數(shù)據(jù)庫(kù)服務(wù)器上安裝訪問(wèn)Sybase的客戶(hù)端,配置連接Sybase數(shù)據(jù)庫(kù)服務(wù)器的連接參數(shù),并測(cè)試連接是否成功。
圖2
如上圖所示,首先在客戶(hù)端添加一個(gè)需要連接的Sybase數(shù)據(jù)庫(kù)服務(wù)器,然后設(shè)置此服務(wù)器的IP地址和端口號(hào),設(shè)置完成后通過(guò)Ping命令測(cè)試能否連接成功。
2.2配置ODBC數(shù)據(jù)源
在SQL Server數(shù)據(jù)庫(kù)服務(wù)器上打開(kāi)【管理工具】【數(shù)據(jù)源(ODBC)】,配置ODBC數(shù)據(jù)源。在【用戶(hù)DSN】和【系統(tǒng)DSN】的標(biāo)簽上都可以進(jìn)行添加,可根據(jù)具體的連接情況進(jìn)行測(cè)試選擇。如果在驅(qū)動(dòng)程序的選擇列表中,沒(méi)有出現(xiàn)“Sybase System 11”,則是因?yàn)樵赟y base客戶(hù)端安裝時(shí)沒(méi)有選擇“ODBC Driver”組件。
圖3
需要注意的是:在圖4的【Connection】標(biāo)簽頁(yè)的Charset處應(yīng)填上“cp850”,以免查詢(xún)返回的數(shù)據(jù)因?yàn)樽址牟黄ヅ涠霈F(xiàn)亂碼的情況。
2.3建立鏈接服務(wù)器
在SQL server企業(yè)管理器中,新建鏈接服務(wù)器,設(shè)置連接參數(shù),如圖5所示。設(shè)置完成后,在新建的鏈接服務(wù)器中單擊表或視圖,如果能正確顯示表名或視圖名,則鏈接服務(wù)器配置成功。
圖5
2.4實(shí)現(xiàn)對(duì)Sybase數(shù)據(jù)庫(kù)的查詢(xún)
鏈接服務(wù)器創(chuàng)建好后,可以通過(guò)OPENQUERY()函數(shù)來(lái)實(shí)現(xiàn)對(duì)Sybase數(shù)據(jù)庫(kù)的訪問(wèn)。OPENQUERY()函數(shù)的使用就是在指定的鏈接服務(wù)器上執(zhí)行的一個(gè)直接傳遞查詢(xún),就像在查詢(xún)的FORM字句中引用表名那樣引用。依據(jù)OLE DB提供程序的能力,還可以將OPENQUERY()函數(shù)引用為INSERT、UPDATE或DELETE語(yǔ)句的目標(biāo)表。
使用語(yǔ)法:OPENQUERY ( linked_server ,query )
參數(shù)釋義:linked_server,一個(gè)標(biāo)識(shí)符,表示鏈接服務(wù)器的名稱(chēng)。query在鏈接服務(wù)器中執(zhí)行的查詢(xún)字符串,根據(jù)訪問(wèn)數(shù)據(jù)庫(kù)的類(lèi)型,采用所訪問(wèn)數(shù)據(jù)庫(kù)的語(yǔ)法規(guī)則。
使用示例:如圖6所示,在SQL查詢(xún)分析器中,執(zhí)行如下語(yǔ)句,返回所需的Sybase數(shù)據(jù)庫(kù)中的數(shù)據(jù)。需要注意的是:不同的數(shù)據(jù)庫(kù)對(duì)應(yīng)的SQL語(yǔ)言是有所不同的,單引號(hào)紅色部分的語(yǔ)句需要遵循Sybase數(shù)據(jù)庫(kù)查詢(xún)的語(yǔ)法規(guī)則。如要通過(guò)Delphi在前臺(tái)實(shí)現(xiàn)查詢(xún),需要注意使用多重引號(hào)。
3結(jié)束語(yǔ)
通過(guò)在SQL server數(shù)據(jù)庫(kù)端,建立鏈接服務(wù)器,實(shí)現(xiàn)對(duì)Sybase數(shù)據(jù)庫(kù)的訪問(wèn),大大簡(jiǎn)化了數(shù)據(jù)共享和數(shù)據(jù)交換的過(guò)程,方便了用戶(hù)的使用,增強(qiáng)了數(shù)據(jù)庫(kù)的安全性,極大地提高了數(shù)據(jù)管理的效率。
參考文獻(xiàn):
[1] (美)Microsoft Corporation.SQL Server2000數(shù)據(jù)庫(kù)開(kāi)發(fā)手冊(cè)[M].北京:科學(xué)出版社,2001.
[2] (美)Mike Gunderloy,Joseph L.Jorden. SQL Server2000從入門(mén)到精通[M].邱仲潘,譯.北京:電子工業(yè)出版社,2001.
[3]閻曉青.Sybase Open Client應(yīng)用開(kāi)發(fā)指南[M].北京:中國(guó)水利水電出版社,1997.