本人很喜歡Oracle,在工作中也很喜歡總結關於Provider for Oracle的經驗教訓,下面就這個問題來詳細說說吧。在SQL Server 2000建立Oracle連結服務器需要額外的組態工作:必須在客戶端計算機內登錄一個新機碼(以本例而言,您的SQL Server將是Oracle Server的客戶端)。
您必須為Windows操作系統與Oracle Server的版本選擇一個適當的登錄機碼。在C:\program files\common files\system\ole db目錄下可找到適當的登錄檔(registry files),文件名稱以mtx作為開頭。雙擊適當的登錄檔之後加入必要的機碼值。如果想獲取更多這方面的信息,請查閱SQL Server線上手冊,搜尋:Accessing and Changing Relational Data, Distributed QuerIEs, OLE DB Providers Tested with SQL Server, OLE DB Provider for Oracle, 並查閱有關Registry EntrIEs之相關資料。
您可藉由兩道系統預儲程序來建立連結服務器。一開始先執行sp_addlinkedserver指定您所選擇的OLE DB provider。下面范例將設定為Microsoft Data Access for Oracle:
sp_addlinkedserver 'OraDB', 'Oracle', 'MSDAORA', 'Ora817'
或是您可以設定為Oracle's OLE DB provider:
sp_addlinkedserver 'OraDB', 'Oracle', 'OraOLEDB.Oracle', 'Ora817'
在上述方法中可任選其一。雖然Microsoft官方僅支持且建議使用Microsoft OLE DB Provider for Oracle,但是我接下來所要示范的INSERT指令中,使用此provider將會受到某些限制。如果您在使用Microsoft的provider 時遇到了問題,建議您在洽詢Microsoft的技術支持前,先試試Provider for Oracle!
下一個步驟則是執行sp_addlinkedsrvlogin 建立一個連結服務器之登入帳號。SQL Server 與其它Oracle 客戶端一樣,也是需要帳號和密碼才能登入Oracle Server。
您有數種方式可將使用者名稱以及密碼提供給sp_addlinkedsrvlogin。在下面第一個范例中,我已經事先建立一個名為sys(密碼為 change_on_install)之登入帳號,以便SQL Server將帳號密碼送給Oracle時就能順利仿真成Oracle的帳號密碼。在預設的情況下,Oracle的sys使用者帳號其密碼為 change_on_install。