共用方式為


OLE DB 提供者的索引鍵集導向資料指標需求

下列條件必須符合,Transact-SQL 索引鍵集導向的資料指標才可參考遠端資料表:

  • 分散式查詢必須符合宣告索引鍵集導向之資料指標的 DECLARE CURSOR 陳述式所使用的 SELECT 陳述式需求。如需索引鍵集導向資料指標支援的 Transact-SQL 條件詳細資訊,請參閱<DECLARE CURSOR (Transact-SQL)>。

  • 查詢中的所有本機資料表必須擁有唯一的索引。遠端資料表的索引必須透過 IDBSchemaRowset 介面的 INDEXES 資料列集來公開。

OLE DB 提供者的索引需求

SQL Server 可使用 OLE DB 提供者的資料表索引來驗算某些查詢。如果 SQL Server 要使用索引,提供者應該公開 OLE DB 界面,允許掃描索引資料列集,使用索引資料行值在索引資料列集中搜尋,以及使用從索引資料列集中取得的書籤來設定資料列在基底資料表資料列集的位置。

使用 OLE DB 提供者的索引只在索引與資料表資料列集位於 SQL Server 執行個體的同一台電腦上時,才有效能上的效益。因此,資料來源必須位於 SQL Server 的同一台電腦上,您才應設定 Index AS Access Path 選項。

僅當下列符合條件時,SQL Server 才能使用 OLE DB 提供者的索引:

  • 提供者必須支援 TABLES、COLUMNS 與 INDEXES 結構描述資料列集的 IDBSchemaRowset 界面。

  • 提供者必須支援可藉著指定索引名稱與對應的基底資料表名稱而透過 IOpenRowset 來開啟索引上的資料列集。

  • Index 物件應該支援它所有的強制介面:IRowsetIRowsetIndexIAccessorIColumnsInfoIRowsetInfoIConvertTypes

  • 根據索引基底資料表使用 IOpenRowset 開啟的資料列集, 必須支援 IRowsetLocate 介面,以根據從索引資料列集取得的書籤來定位基底資料表上的資料列。

若 OLE DB 提供者符合這些需求,SQL Server 系統管理員可設定 Index As Access Path 提供者選項, 讓 SQL Server 能夠使用提供者的索引來驗算查詢。根據預設,除非此選項已設定,否則 SQL Server 不會嘗試使用提供者的索引。

可更新的索引鍵集資料指標需求

遠端資料表可透過定義於分散式查詢的索引鍵集資料指標來更新或刪除。例如:UPDATE | DELETE remote_table WHERE CURRENT OF cursor_name。

必須符合下列條件,可更新的資料指標才允許用於分散式查詢:

  • 提供者必須符合遠端資料表上的更新與刪除條件。如需詳細資訊,請參閱<OLE DB 提供者的 UPDATE 與 DELETE 需求>。

  • 所有的資料指標作業都必須位於具有可重複讀取隔離等級 (Isolation Level) 或序列化 (Serializable) 隔離等級的外顯使用者交易之中 (或是多重陳述式交易)。

提供者必須使用 ITransactionJoin 介面來支援分散式交易。