跨伺服器返回暫存資料表資料

來源:互聯網
上載者:User

解決這個問題,推薦使用OpenQuery或OPENROWSET的方法.  
  首先要說的是,這是一種非常規的方法,有一些效能上的缺陷.  
  OpenQuery,OPENROWSET允許使用者在連結的伺服器上查詢.通過這種方法來得到查詢的結果集.  
  1.在建立預存程序中,必須設定  
        SET   ANSI_NULLS   ON  
        SET   ANSI_WARNINGS   ON  
        (在查詢分析器中執行,將預設啟用這些設定)  
  2.定義連結的伺服器(必須有sysadmin許可權)  
      exec   sp_addlinkedserver   @server   =   'LOCALSERVER',     @srvproduct   =   '',  
                                                    @provider   =   'SQLOLEDB',   @datasrc   =   @@servername  
      @server是自訂連結的伺服器的名稱  
      (如果不指定,將預設為master)  
  3.這個時候就可以使用  
  eg:SELECT   *   FROM   OPENQUERY(LOCALSERVER,   'EXEC   MyStoreProc')    
  來得到預存程序返回的結果集.  
        如果使用了暫存資料表,必須如下調用  
        SELECT   *   FROM   OPENQUERY(LOCALSERVER,'SET   FMTONLY   OFF   EXEC   pubs..sp_fkeys   authors')  
      通常來說,OPENQUERY只是作為一個快捷的遠端資料庫訪問,它必須跟在select後面,也就是說需要返回一個recordset.  
  而加上set   fmtonly   off用來屏蔽預設的只返回列資訊的設定之後  
  select   *   from   openrowset(sqloledb,server;sa;,set   fmtonly   off    
  exec   ...)    
  ,這樣返回的output集合就會提交給前面的select顯示。  
  如果採用預設設定,會返回空集合導致select出錯,命令也就無法執行了  

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/chenmintong/archive/2007/11/10/1877744.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.