MSDN >
論壇首頁
>
伺服器與企業軟體 論壇
>
資料庫與程式開發(SQL Server Development)
>
MS-SQL 2005 在下Select 時, 能夠 Link DB 到Oracle嗎?
MS-SQL 2005 在下Select 時, 能夠 Link DB 到Oracle嗎?
如果可以的話
那Select 該怎麼下?
還有
要做那些設定?
解答
你要先建立到 Oracle 的 Linked Server 資訊,才可以用 SELECT 存取在 Oracle 上的資料。
http://blog.blueshop.com.tw/josephlee/archive/2004/12/22/1087.aspx
- 找到原因了
原因出在 Oracle 裡的該Table
有的欄位得格式是 timestamp(6)
所以資料在進MS-SQL時, 轉不過去
所以需要在下select時
使用Oracle 的SQL語法, 手動轉換為date格式
cast(原本的欄位名稱 as date) as 新的欄位名稱 - 應該OK了
http://www.player.idv.tw/prog/index.php?title=MS-SQL#SQL-Server.E5.A6.82.E4.BD.95Select.E5.88.B0Oracle.E8.A3.A1.E7.9A.84.E8.B3.87.E6.96.99
1.DB Link 由【Oracle Provider for OLE DB】換成【MicroSoft OLE DB Provider for Oracle】
2.在Oracle上設View, 在Oracle端預先作cast (資料形態轉換), 以簡化在MS-SQL端下的Oracle的SQL查詢
目前大部分已可正常轉資料了
除了少數因為Oracle的日期範圍, 超過MS-SQL的日期範圍的欄位, 無解以外
所有回覆
你要先建立到 Oracle 的 Linked Server 資訊,才可以用 SELECT 存取在 Oracle 上的資料。
http://blog.blueshop.com.tw/josephlee/archive/2004/12/22/1087.aspx
Select with openquery once created linked server to Oracle.
- 殘念
接不上
select * from OPENQUERY(ERP,'select * from erpdb')
訊息 7399,層級 16,狀態 1,行 1
連結伺服器 "ERP" 的 OLE DB 提供者 "OraOLEDB.Oracle" 報告了錯誤。提供者報告了未預期的重大錯誤。
訊息 7320,層級 16,狀態 2,行 1
無法對連結伺服器 "ERP" 的 OLE DB 提供者 "OraOLEDB.Oracle" 執行查詢 "select * from erpdb"。 Looks like you have connection issue. How did you create linked server? Which provider used? use 64-bit or 32-bit Oracle client?
可以到下列網址安裝Oracle Client:
http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10201winsoft.html
您的Oracle版本為? 32 or 64 位元?
- Q
racle的Server端版本? 32 or 64 位元?
A: 不知道是 32 or 64 位元, 但應該是Oracle 9i 相容的版本
Q.Oracle的Client端版本
A: Oracle9i Database Release 2 Client for Microsoft Windows (這個應該是 32位元版的)
Q.MS-SQL版本
A: MS-SQL Server 2005
----
Oracle 的ODBC設定, 確定有設好, 且Oracle相容的其他用戶端, 也能確實的Select出來裡頭的資料
但在MS-SQL之中, 卻是接不起來?
幫我看看
哪一個步驟錯了
1.伺服器物件 -> 連接的伺服器
2.滑鼠右鍵 -> 新增連接的伺服器
3.依序填入以下的內容
連接的伺服器: ERP
伺服器類型: 其他的資料來源
提供者: Oracle Provider for OLE DB
產品名稱: ERP
資料來源: ERP
提供者字串: Provider=OraOLEDB.Oracle.1;Password=erppassword;Persist Security Info=True;User ID=erpuser;Data Source=ERP
4.切換到"安全性"那一頁, 再填入登入Oracle的帳密
使用此安全性內容建立
遠端登入: erpuser
使用此密碼: erppassword
5.確定
---
基於避免洩漏資料庫的真實來源與帳密
貼到討論區這裡的我有改過
但新增 Link DB時的格式與流程
就照上面的步驟一樣
select * from OPENQUERY(ERP,'select * from erpdb')
訊息 7399,層級 16,狀態 1,行 1
連結伺服器 "ERP" 的 OLE DB 提供者 "OraOLEDB.Oracle" 報告了錯誤。提供者報告了未預期的重大錯誤。
訊息 7320,層級 16,狀態 2,行 1
無法對連結伺服器 "ERP" 的 OLE DB 提供者 "OraOLEDB.Oracle" 執行查詢 "select * from erpdb"。
有人可以幫忙看問題出在哪裡嗎? - 找到原因了
原因出在 Oracle 裡的該Table
有的欄位得格式是 timestamp(6)
所以資料在進MS-SQL時, 轉不過去
所以需要在下select時
使用Oracle 的SQL語法, 手動轉換為date格式
cast(原本的欄位名稱 as date) as 新的欄位名稱 - 相關問題
目前只做到Link DB到Oracle, 但資料無法正常Select出來
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20080505111006NCV&fumcde=FUM20041006152735ZFS
http://forums.microsoft.com/TechNet-CHT/ShowPost.aspx?PostID=3278122&SiteID=23
http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=3232984&SiteID=14 - 目前只針對某資料表找不出來, 還是全部資料表都沒辦法select?
- 有的Table只要在Select時, 預先排除掉在Oracle下具有timestamp(6) 格式的欄位的話
就可以正常 select
(Orace 的資料型態轉換語法 cast , 不知道為何只要經過SQL Server就自動cut 掉關鍵字了?)
有的Table
不管我在select時預先拿掉多少欄位
select時
它不出來
就是不出來
(SQL Server 2005在查詢時, 陷入沒有回應, 等超過半小時, 也一樣)
可是同樣的Oracle的select 字串, 我拿到其他的Oracle的用戶端, 卻又一切正常
難道SQL Server 在Link DB 到 Oracle時
還有需要微調的選項或設定嗎? Tried create linked server with other provider like ole db for odbc driver?
- 應該OK了
http://www.player.idv.tw/prog/index.php?title=MS-SQL#SQL-Server.E5.A6.82.E4.BD.95Select.E5.88.B0Oracle.E8.A3.A1.E7.9A.84.E8.B3.87.E6.96.99
1.DB Link 由【Oracle Provider for OLE DB】換成【MicroSoft OLE DB Provider for Oracle】
2.在Oracle上設View, 在Oracle端預先作cast (資料形態轉換), 以簡化在MS-SQL端下的Oracle的SQL查詢
目前大部分已可正常轉資料了
除了少數因為Oracle的日期範圍, 超過MS-SQL的日期範圍的欄位, 無解以外
