這裡介紹然而,當部分資料是放在Oracle資料庫伺服器的時候,這可能會帶給您許多挑戰。舉例來說,光是設定連結伺服器就不是一件容易的事。 假定您現在擁有一個以Microsoft .NET為架構的網路訂購系統,但是品管維護系統卻仍然使用一套舊式的Oracle資料庫應用程式。當您的顧客在產品保證期間下了產品更換之類的訂單,則該筆訂單將不收取任何費用。此時您需要從Oracle資料庫得到即時的查詢結果。藉著建立連結伺服器的方式(linked server),您將可以從SQL Server即時查詢位於Oracle資料庫的顧客資料,找出誰是您既有的客戶。
當您的資料分散在不同的SQL Server資料庫時,藉由連結伺服器可讓您執行跨伺服器之分散式查詢。當所有的資料庫伺服器都是SQL Server,則連結伺服器的設定十分容易,而且在SQL Server線上手冊中就涵蓋了您所需要了解的所有事項。然而,當部分資料是放在Oracle資料庫伺服器的時候,這可能會帶給您許多挑戰。舉例來說,光是設定連結伺服器就不是一件容易的事。您必須了解:也就是您要在SQL Server的Enterprise Manager設定一個Oracle連結伺服器,而這台SQL Server對Oracle來說就是一個客戶端。所以您必須在SQL Server所在的伺服器成功地安裝並組態Oracle之客戶端軟體。因為Oracle提供的產品只支援Oracle 8以後的資料庫,所以我假設您正在使用的都是Oracle 8以後的資料庫。在Oracle Net8函式庫則提供了SQL Server所需的客戶端軟體。
譯者註1:
設定連線伺服器時是利用Microsoft所提供的OLE DB Provider for Oracle,使用的Oracle網路函式庫為SQL*Net 2.3.3.0.4或是往後的版本,不過這是Oracle 7.3資料庫所提供的。換句話說,要設定Oracle資料庫為SQL Server的連線伺服器時,Oracle資料庫只要是7.3.3.4以後的版本,並搭配適當的SQL*Net或是Net 8 函式函式庫即可。
資料來源:
1. Oracle 7 Server Getting Started release 7.3.4
2. SQL Server Books Online: OLE DB Provider for Oracle
在Oracle資料庫中,一個schema即代表著SQL Server專家所熟知的單一資料庫(譯者註2)。連線至Oracle資料庫時,您必須提供schema名稱、密碼以及主機線上字串(host string)。每個特定的Oracle帳號都擁有一個Oracle schema,而且只能有一個schema。所以schema名稱其實等於該schema擁有者的帳號名稱。您可以查詢Oracle的資料字典(Data dictionary)以獲得更多schema的內容。
至於Oracle線上字串又可稱為服務名稱(service name)或系統識別資料(Systen Identifier,SID)。我們所謂的SQL Server資料庫個體(instance)在Oracle則稱為資料庫(database)。所以安裝Oracle Server時,安裝程式Oracle Universal Installer(為一個圖形介面之安裝程序,與SQL Server的Setup程式類似)將會詢問您SID名稱為何,以作為Oracle資料庫之名稱。
譯者註2:
這個部分原作者所提到schema的解釋有點問題。 Oracle schema可視為同一個使用者所擁有的所有資料庫物件(schema objects)之集合。舉例來說,使用者scott所建立的EMP table其完整名稱為SCOTT.EMP,而SCOTT就是EMP的schema名稱。所以schema name其實就是一個Oracle資料庫之用戶帳號。但絕對不能拿來跟資料庫相提並論!因為SQL Server的資料庫架構包含了data files與log files,但是Oracle的schema objects只存在於tablespace中。為了避免部分讀者產生混淆,特此說明。
如果您在Windows作業系統上安裝Oracle Server時設定SID為Ora817(與本篇文章的範例相同),則在系統內將會有一個名稱為OracleServiceORA817的服務。