共用方式為


分散式查詢結構

MicrosoftSQL Server 支援兩種可在 Transact-SQL 陳述式中參考異質 OLE DB 資料來源的方法:

  • 連結伺服器名稱

    使用系統預存程序 sp_addlinkedsrvsp_addlinkedserverlogin,可將伺服器名稱指定至 OLE DB 資料來源。在這些連結伺服器中的物件,您可以用分成四部份的名稱,在 Transact-SQL 陳述式中參考。例如,如果 DeptSQLSrvr 的連結伺服器名稱,是根據另一個 SQL Server 執行個體所定義,則下列陳述式將參考該伺服器上的資料表:

    SELECT Title, HireDate 
       FROM DeptSQLSrvr.AdventureWorks.HumanResources.Employee
    

    您也可以在 OPENQUERY 陳述式指定連結伺服器的名稱,以開啟 OLE DB 資料來源中的資料列集。然後您便可以在 Transact-SQL 陳述式中,像參考資料表一樣參考這個資料列集。

  • 特定連接子名稱

    對於資料來源的非經常性的參考,需要以連接連結伺服器所需的資訊來指定 OPENROWSET 或 OPENDATASOURCE 函數。然後您便可以在 Transact-SQL 陳述式中,使用與參考資料表一樣的方式來參考這個資料列集:

    SELECT *
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
            'c:\MSOffice\Access\Samples\Northwind.mdb';'Admin';'';
            Employees)
    

SQL Server 使用 OLE DB 在關聯式引擎與儲存引擎間進行通訊。關聯式引擎將每個 Transact-SQL 陳述式,皆分解成一連串對 OLE DB 資料列集的簡單作業,而儲存引擎可從基底資料表開啟這個資料列集。這是表示關聯式引擎也可以在任何 OLE DB 資料來源上,開啟簡單的 OLE DB 資料列集。

關聯式引擎、OLE DB 層、儲存引擎

關聯式引擎使用 OLE DB 應用程式發展介面 (API) 來開啟連結伺服器上的資料列集、提取資料列、以及管理交易。

每個以連結伺服器的方式存取的 OLE DB 資料來源,在執行 SQL Server 的伺服器上必須存在 OLE DB 提供者。而這組可根據特定 OLE DB 資料來源使用的 Transact-SQL 作業,需視 OLE DB 提供者的能力來執行。如需詳細資訊,請參閱<分散式查詢的 OLE DB 提供者參考資料>。

對於每個 SQL Server 的執行個體,系統管理員 (sysadmin) 固定伺服器角色的成員可以藉由使用 SQL ServerDisallowAdhocAccess 屬性來啟用或停用 OLE DB 提供者的特定連接子名稱。當啟用特定存取時,任何登入到該執行個體的使用者都可以執行包含特定連接子名稱的 SQL 陳述式,該連接子名稱會參考可使用 OLE DB 提供者存取之網路上的任何資料來源。若要控制資料來源的存取權,系統管理員 (sysadmin) 角色的成員可以停用 OLE DB 提供者的 ad-hoc 存取,進而限制使用者只能存取由系統管理員定義之連結伺服器名稱所參考的資料來源。依預設,會啟用 SQL Server OLE DB 提供者的特定存取,並停用所有其他的 OLE DB 提供者。

分散式查詢可在執行 SQL Server 服務下使用 Microsoft Windows 帳戶的安全性內容,允許使用者存取其他資料來源 (如檔案、或 Active Directory 等非關聯式資料來源等等)。SQL Server 會適當地模擬 Windows 登入;但是無法模擬 SQL Server 登入。這可能允許分散式查詢使用者存取他們沒有使用權限的其他資料來源,但執行 SQL Server 服務的帳戶確實擁有權限。使用 sp_addlinkedsrvlogin 預存程序來定義已經授權存取對應連結伺服器的特定登入。ad hoc 名稱無法使用此控制,所以啟用 ad hoc 存取的 OLE DB 提供者時請特別小心。

若有可能,SQL Server 會發送如聯結、限制、規劃、排序等關聯式作業,並依 OLE DB 資料來源的作業加以群組。SQL Server 並未預設將基底資料表掃描成 SQL Server 以及執行本身的關聯式作業。SQL Server 會查詢 OLE DB 提供者以決定它所支援的 SQL 文法層級,並且根據該資訊,儘可能發佈更多的關聯式作業給提供者。如需詳細資訊,請參閱<OLE DB Provider 的 SQL 語法需求>。

SQL Server 為 OLE DB 提供者指定一種可傳回統計資料的機制,以指出在 OLE DB 資料來源中如何散發索引鍵值。這讓 SQL Server 查詢最佳化工具能根據各 SQL 陳述式的需求,分析資料來源中的資料模式,並加強查詢最佳化工具產生最佳執行計畫的能力。如需詳細資訊,請參閱<OLE DB Provider 的散發統計資料需求>。