最近做的項目都會與Oracle產生資料的級聯,在此標記:
資料庫:
我方項目:SQL2000(獨立伺服器--Win2003)
客戶:Oracle 9I(獨立伺服器--Win2003)
需求:
當我方項目中特定資料發生變動時,包括新增,更新,刪除時.要同步客戶方的某資料庫中資料.
本來想用觸發器來做.考慮到維護問題所以放棄.改用分布式操作.
過程:
首先要在我方伺服器上安裝Oracle用戶端(因為要用OLE DB來串連),安裝過程略過.測試Oracel沒有問題後,就可以直接在"企業管理器"中建立"連結的伺服器"了
"企業管理器"->選擇自己的SQL伺服器-->"安全性"-->"連結的伺服器".1
圖1:
按右鍵"連結的伺服器"-->選擇"建立連結的伺服器"-->在彈出的表單的"連結的伺服器"中寫入一個名字"HIS"(以後在TSQL中要用地)"伺服器類型"下選擇"其它資料來源"
在"提供者名稱"的右面的下拉框中選中"Microsoft OLE DB Provider for Oracle" 2
圖2:
下面就是填寫"產品名稱",資料來源,連接字串.這些內容都要可以在下面檔案
"H:\oracle\ora92\network\ADMIN\tnsnames.ora"找到,其中"H:"是Oracle的安裝盤
用記事本開啟後內容如下:
# TNSNAMES.ORA Network Configuration File: H:\oracle\ora92\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
74 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.0)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = recdb)
)
)
其中"74"便是"產品名稱","資料來源"所要填寫的內容,"連接字串":uid=Oracle使用者;pwd=Oracle密碼.全部內容3
然後選擇"安全性"頁,選擇下面的"用此安全上下文進行"輸入"遠程登入"(Oracle使用者名稱)和"遠程登入密碼"(Oracle使用者密碼),之後再開啟"伺服器選項"頁將下面"值"
列全部勾選上.4
點擊"確定"後,全部的配置就結束了.再看"企業管理器"的"連結的伺服器"下面就多了一個名稱是"HIS"的連結的伺服器.
下面用'T-SQL'來操作Oracle的表:
/*
OPENQUERY(HIS, 'SELECT * FROM his.R_DEPT')
其中的'HIS'便是連結的伺服器的名稱
*/
--查詢R_DEPT表的資料,並列出所以有欄位
SELECT *
FROM OPENQUERY(HIS, 'SELECT * FROM HIS.R_DEPT')
--查詢R_DEPT表的資料,只列出'dept_code'欄位的內容
SELECT *
FROM OPENQUERY(HIS, 'SELECT dept_code FROM HI.R_DEPT')
--查詢指定條件的記錄
SELECT * FROM OPENQUERY(HIS,'SELECT * FROM HIS.R_ADDRESS') A WHERE A.ADDR_CODE='3294'
--插入一條新記錄
INSERT INTO OPENQUERY(HIS,'select addr_code,address from his.r_address')
VALUES('3294','test')
--更新指定條件的記錄
UPDATE OPENQUERY(his,'SELECT ADDR_CODE,ADDRESS FROM HIS.R_ADDRESS') SET ADDRESS='TEST' WHERE ADDR_CODE='3294'
--刪除指定條件的記錄
DELETE FROM OPENQUERY(HIS,'SELECT * FROM HIS.R_ADDRESS') WHERE ADDR_CODE='3294'
注:以上操作,需Oracle使用者有相關許可權.
強烈建議,在編輯文章時加下"即時自動儲存"功能,偶寫內容時IE崩潰兩次,重寫了兩次.鬱悶!!!
(完)