SQL Server 跨伺服器操作

來源:互聯網
上載者:User
OPENROWSET

包含訪問 OLE DB 資料來源中的遠端資料所需的全部串連資訊。當訪問連結的伺服器中的表時,這種方法是一種替代方法,並且是一種使用 OLE DB 串連並訪問遠端資料的一次性的、特殊的方法。可以在查詢的 FROM 子句中像參考資料表名那樣引用 OPENROWSET 函數。依據 OLE DB 提供者的能力,還可以將 OPENROWSET 函數引用為 INSERT、UPDATE 或 DELETE 語句的目標表。儘管查詢可能返回多個結果集,然而 OPENROWSET 只返回第一個。

文法

OPENROWSET ( 'provider_name'
    , { 'datasource' ; 'user_id' ; 'password'

        | 'provider_string' }
    , { [ catalog.] [ schema.] object
        | 'query' }
    )

參數

'provider_name'

字串,它代表在註冊表中指定的 OLE DB 提供者的易記名稱。provider_name 沒有預設值。

'datasource'

字串常量,它對應著某個特定的 OLE DB 資料來源。datasource 是將被傳遞到提供者 IDBProperties 介面以初始化提供者的 DBPROP_INIT_DATASOURCE 屬性。通常,這個字串包含資料庫檔案的名稱、資料庫伺服器的名稱,或者提供者能理解的用於尋找資料庫的名稱。

'user_id'

字串常量,它是傳遞到指定 OLE DB 提供者的使用者名稱。user_id 為串連指定安全上下文,並將它作為 DBPROP_AUTH_USERID 屬性傳遞進來以初始化提供者。

'password'

字串常量,它是將被傳遞到 OLE DB 提供者的使用者密碼。當初始化提供者時,將 password 作為 DBPROP_AUTH_PASSWORD 屬性傳遞進來。

'provider_string'

提供者特定的連接字串,將它作為 DBPROP_INIT_PROVIDERSTRING 屬性傳遞進來以初始化 OLE DB 提供者。通常 provider_string 封裝初始化提供者所需的所有串連資訊。

catalog

目錄或資料庫的名稱,其中駐留著指定的對象。

schema

架構的名稱或指定對象的對象所有者名稱。

object

對象名稱,它唯一地標識出將要操作的對象。

'query'

是字串常量,發送到提供者並由提供者執行。Microsoft SQL Server 不處理該查詢,但處理由提供者返回的查詢結果(直接傳遞查詢)。對於有些提供者,它們並沒有通過表名而是通過命令語言表現自己的表格格式資料,那麼將直接傳遞查詢用於這些提供者是非常有用的。只要查詢提供者支援 OLE DB Command 對象及其強制介面,那麼在遠程伺服器上就支援直接傳遞查詢。有關更多資訊,請參見 SQL Server OLE DB 程式員參考。

注釋

如果 OLE DB 提供者在指定的資料來源中支援多個目錄和架構,那麼就需要目錄及架構名稱。如果 OLE DB 提供者並不支援目錄和架構,那麼可以省略 catalog schema 的值。

如果提供者只支援架構名,那麼必須指定一個兩部分名稱,形式為 schema.object。如果提供者只支援目錄名,那麼必須指定一個三部分名稱,形式為 catalog.schema.object

OPENROWSET 不接受參數變數。

許可權

OPENROWSET 許可權由傳遞到 OLE DB 提供者的使用者名稱的許可權確定。

樣本A. 將 OPENROWSET 與 SELECT 語句及用於 SQL Server 的 Microsoft OLE DB 提供者一起使用

下面的樣本使用用於 SQL Server 的 Microsoft OLE DB 提供者訪問 pubs 資料庫中的 authors 表,該資料庫在一個名為 seattle1 的遠程伺服器上。從 datasourceuser_idpassword 中初始化提供者,並且使用 SELECT 語句定義返回的行集。

USE pubsGOSELECT a.*FROM OPENROWSET('SQLOLEDB','seattle1';'sa';'MyPass',   'SELECT * FROM pubs.dbo.authors ORDER BY au_lname, au_fname') AS aGO
B. 將 OPENROWSET 與對象及用於 ODBC 的 OLE DB 提供者一起使用

下面的樣本使用用於 ODBC 的 OLE DB 提供者以及 SQL Server ODBC 驅動程式訪問 pubs 資料庫中的 authors 表,該資料庫在一個名為 seattle1 的遠程伺服器中。提供者用在 ODBC 提供者所用的 ODBC 文法中指定的 provider_string 進行初始化,定義返回的行集時使用 catalog.schema.object 文法。

USE pubsGOSELECT a.*FROM OPENROWSET('MSDASQL',   'DRIVER={SQL Server};SERVER=seattle1;UID=sa;PWD=MyPass',   pubs.dbo.authors) AS aORDER BY a.au_lname, a.au_fnameGO
C. 使用用於 Jet 的 Microsoft OLE DB 提供者

下面的樣本通過用於 Jet 的 Microsoft OLE DB 提供者訪問 Microsoft Access Northwind 資料庫中的 orders 表。


說明
  下面的樣本假定已經安裝了 Access。

USE pubsGOSELECT a.*FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',    'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders)    AS aGO
D. 使用 OPENROWSET 和 INNER JOIN 中的另一個表

下面的樣本從本地 SQL Server Northwind 資料庫的 customers 表中,以及儲存在相同電腦上 Access Northwind 資料庫的 orders 表中選擇所有資料


說明
  下面的樣本假定已經安裝了 Access。

USE pubsGOSELECT c.*, o.*FROM Northwind.dbo.Customers AS c INNER JOIN    OPENROWSET('Microsoft.Jet.OLEDB.4.0',    'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders)    AS o   
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.