Luben Park

          Java Ben 成長之路

          導航

          <2006年3月>
          2627281234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          統計

          公告

          葉子的離開 是因為風的追求 還是樹的不挽留

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          [轉帖]SQL Server - [分布式查詢/事務]

          分布式查詢
          ??? OPENROWSET
          ??? 從Excel取數據
          ??? SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=d:\1.xls',[Sheet1$])
          ??? 從Oracle取數據
          ??? SELECT?* FROM OPENROWSET('MSDAORA.1','NetServiceName';'User';'Password','SELECT * FROM OracleTalbe')
          ?
          ??? Linked Server(for Oracle)
          ??? 建立Linked Server
          ??? sp_addlinkedserver'Allies', 'Oracle', 'MSDAORA.1', 'NetServiceName'
          ??? Oracle的Login
          ??? sp_addlinkedsrvlogin'Allies', FALSE, 'SQLServerLogin', 'OracleUser', 'OraclePassword'
          ??? 從Oracle查詢數據
          ??? SELECT*FROM OPENQUERY( Allies, 'SELECT * FROM OracleTalbe'),或者
          ??? SELECT*FROM Allies..OracleUser.OracleTalbe
          ??? 修改Linked Server的Server Option
          ? ?? sp_serveroption'Allies', 'Option Name', 'Option Value'
          ??? 例如
          ??? sp_serveroption'OraDC', 'rpc out', 'true'
          ??? sp_serveroption'OraDC', 'rpc', 'true'
          ??? 向Oracle插入數據(還沒有用過)
          ??? INSERT INTO OPENQUERY(Allies, 'SELECT ... FROM OracleTalbe WHERE 1=2') VALUES ( ... )
          ??? 刪除Linked Server
          ??? sp_dropserver'Allies', 'droplogins'
          ?
          ??? 注意:使用OPENROWSET、OPENQUERY時,SQL Server不對提交的SQL語句做任何檢查,直接將語句提交給Linked Server進行處理;使用四部分命名法時,SQL Server可能從Linked Server上讀取被引用表的數據到SQL Server,然后在SQL Server上來完成其它操作。
          ?
          ??? 設置SQL Server到Oracle的Linked Server,可參考以下KB文章:
          ??? How to set up and troubleshoot a linked server to Oracle in SQL Server
          ??? Limitations of Microsoft Oracle ODBC Driver and OLEDB Provider
          ??? Techniques to Debug Connectivity Issues to an Oracle Server Using the ODBC Driver and OLE DB Provider
          ??? Supportability of the Microsoft ODBC Driver/ OLE DB Provider for Oracle w.r.t Oracle 8.x
          ?
          ??? 分布式事務中的OPENROWSET、OPENQUERY、OPENDATASOURCE
          ??? 如果在事務,或是一些隱含使用事務的情況下,例如TRIGGER中,使用OPENROWSET、OPENQUERY、OPENDATASOURCE時,就需要使用分布式事務來處理。
          ??? 在分布式事務中使用OPENROWSET、OPENQUERY、OPENDATASOURCE或Linked Server時,需要注意:
          ??? 1. 必須啟動MSDTC服務。
          ????Service Name為Distributed Transaction Coodinator。
          ??? 2. 所涉及的Server之間如果存在網關、防火墻,需要開啟TCP 135端口。
          ??? 分布式事務需要使用這個端口通訊。
          ??? 3. 如果Server之間跨網段,則Server之間需要能互相PING到機器名(而不是IP地址)。
          ??? 如果相互PING機器名有問題,修改system32/driver/etc目錄下的hosts文件。
          ?
          ??? 上面的設置不正確時,會出現類似如下的錯誤:
          ??? 該操作未能執行,因為 OLE DB 提供程序 'SQLOLEDB' 無法啟動分布式事務。
          [OLE/DB provider returned message: 新事務不能登記到指定的事務處理器中。 ]
          OLE DB 錯誤跟蹤[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。
          ?
          ?
          ??? 分布式事務可以查詢下列KB文章:
          ??? Failed to Enlist on Calling Object's Transaction
          ??? How to troubleshoot MS DTC firewall issues
          ??? You receive error 7391 when you run a distributed transaction against a linked server
          ?
          ??? 使用分布式查詢,可以參考:Chapter 25 - Distributed Queries: OLE DB Connectivity。
          ??? 關于ORAOLEDB提供程序的詳細說明,可以參考:Oracle Provider for OLE DB Developer's Guide - Release 9.2 。

          posted on 2006-03-29 16:35 Ben 閱讀(1207) 評論(0)  編輯  收藏 所屬分類: 數據庫相關

          主站蜘蛛池模板: 江门市| 浦东新区| 冷水江市| 巍山| 景泰县| 南陵县| 石渠县| 崇礼县| 五河县| 衡阳县| 景泰县| 达孜县| 清徐县| 河津市| 沙湾县| 滦南县| 彰化市| 二手房| 志丹县| 仁寿县| 泰州市| 尤溪县| 辽阳县| 海兴县| 新兴县| 邵阳市| 原平市| 景德镇市| 昌平区| 安庆市| 甘德县| 洛宁县| 东乌珠穆沁旗| 清河县| 西平县| 澄江县| 铜陵市| 东莞市| 宜州市| 甘谷县| 洛扎县|