分散式查詢讓 SQL Server 透過 OLE DB 存取異質資料來源(其他 SQL Server、Oracle、Access、文字檔等)。核心在於提供者能力分類與選項設定。
| 類別 | 核心需求 | 代表提供者 |
|---|---|---|
| SQL 命令提供者 | 支援 Command 物件 + 完整 OLE DB 介面 + SQL 子集語法(DBPROP_SQLSUPPORT) | SQLOLEDB (SQL Server)、MSDASQL (ODBC) |
| 索引提供者 | 支援 IDBSchemaRowset (TABLES/COLUMNS/INDEXES) + IOpenRowset 開啟索引資料列集 + Index 物件完整介面 + IRowsetLocate | SQLOLEDB、Jet OLE DB |
| 簡單資料表提供者 | 僅支援 IOpenRowset 開啟基礎表,無索引/命令能力 | 文字檔、CSV、Excel 提供者 |
| 非 SQL 命令提供者 | 不支援標準 SQL 命令,可能有專屬查詢語法 | 特定 ISV 提供者 |
分類不互斥,單一提供者可屬多類。
SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'Data Source=RemoteSvr;Integrated Security=SSPI').DB.dbo.Table
-- 或使用連結伺服器
SELECT * FROM LinkedSvr.DB.dbo.Table
REMOTE 提示)。BULK INSERT、BCP、SSIS,避免分散式查詢效能陷阱。理解提供者能力分類,是設計高效、穩定分散式查詢的前提。SQL 命令提供者支援最完整;索引提供者能下推謂詞;簡單資料表提供者僅適合小資料量臨時存取。