適用於:SQL Server
Azure SQL Database
Azure Synapse Analytics
Analytics Platform System (PDW)
PolyBase 會啟用 SQL Server 的資料虛擬化。
什麼是 PolyBase?
PolyBase 可讓您的 SQL Server 執行個體直接從 SQL Server、Oracle、Teradata、MongoDB、Hadoop 叢集、Cosmos DB 和 S3 相容物件儲存體使用 Transact-SQL (T-SQL) 查詢資料,而不需要個別安裝用戶端連線軟體。 您也可以使用一般 ODBC 連接器,使用協力廠商 ODBC 驅動程式連線到其他供應商。 PolyBase 可讓 T-SQL 查詢將資料從外部來源聯結至 SQL Server 執行個體中的關聯式資料表。
PolyBase 也支援查詢半結構化和結構化檔案型資料格式,例如 CSV、Parquet、JSON 和 Delta Lake 檔案。 這可讓您將檔案型資料無縫整合到您的 T-SQL 工作流程中。
使用 PolyBase 功能進行資料虛擬化的主要使用案例是允許資料保持原始位置和格式。 您可以在 SQL Server 執行個體中虛擬化外部資料,以便在 SQL Server 中的其他任何資料表之類的位置可供查詢。 此程序會將資料移動的 ETL 程序的需求降到最低。 使用 PolyBase 連接器可以實現這種資料虛擬化場景。
支援的 SQL 產品和服務
PolyBase 為下列 Microsoft SQL 產品提供這些相同的功能:
僅限 SQL Server 2016 (13.x) 及更新版本 (Windows)
SQL Server 2019 (15.x) 及更新版本 (Windows 及 Linux)
Azure SQL 受控執行個體,如需詳細資訊,請檢閱使用 Azure SQL 受控執行個體進行資料虛擬化
如需詳細資訊,請檢閱 使用 Azure SQL 資料庫進行資料虛擬化 (預覽)
SQL Server、Analytics Platform System (PDW)
Azure Synapse Analytics (適用於專用 SQL 集區)
- Azure Synapse Analytics 中提供兩種模式的資料虛擬化:PolyBase 和原生。 如需詳細資訊,請參閱搭配 Synapse SQL 使用外部表格。
SQL Server 2025 PolyBase 增強功能
| SQL Server 2025 (17.x) 的新功能 | 詳細資料 |
|---|---|
| CSV、Parquet 和 Delta 1 的原生支援 | 不再需要安裝用於外部資料的 PolyBase 查詢服務,即可使用 OPENROWSET、CREATE EXTERNAL TABLE 或 CREATE EXTERNAL TABLE AS SELECT 搭配下列類型的外部資料:Parquet、Delta、Azure Blob 儲存體(ABS)、Azure Data Lake 儲存體(ADLS)或 S3 相容物件儲存體。 |
| 在 Linux 上使用一般 ODBC 數據源 | 如需詳細資訊,請參閱 設定PolyBase以使用ODBC泛型類型存取外部數據。 |
| TDS 8.0 支援 | PolyBase 預設採用 ODBC 驅動程式(SQL Server 18 版及 Encrypt=Yes 強制)的安全配置。 與其他 SQL Server 功能不同,PolyBase 允許 TrustServerCertificate=True 自簽憑證情境。 為了強制執行 TLS 1.3 及 TDS 8.0 的嚴格加密,請設 Encrypt=Strict 和 TrustServerCertificate=No。 更多資訊請參閱 「建立外部資料來源 - CONNECTION_OPTIONS」。 檢視 SQL Server 2025 中資料庫引擎功能的關鍵變更。 |
| 管理式識別 | 受控身份適用於由 Azure Arc 和 SQL Server 2025 啟用的 Azure VM 上的 SQL Server。 |
1 在 SQL Server 2025(17.x)上,連接其他資料庫仍需 PolyBase 外部資料查詢服務。 例如:SQL Server、Oracle、DB2、Teradata、MongoDB 或 ODBC。
SQL Server 2022 PolyBase 增強功能
| SQL Server 2022 (16.x) 新功能 | 詳細資料 |
|---|---|
| 與 S3 相容的物件儲存體 | SQL Server 2022 (16.x) 使用 S3 REST API 新增連接器 S3 相容物件儲存體。 您可以使用 OPENROWSET 和 CREATE EXTERNAL TABLE 來查詢 S3 相容物件儲存體中的資料檔案。 |
| 某些連接器與 PolyBase 服務分開 | S3 相容的物件儲存連接器、ADSL Gen2 和 Azure Blob 儲存不再依賴 PolyBase 服務。 PolyBase 服務仍必須執行以支援與 Oracle、Teradata、MongoDB 和泛型 ODBC 的連線。 PolyBase 功能仍必須安裝在您的 SQL Server 執行個體上。 |
| Parquet 檔案格式 | PolyBase 現在能夠從儲存在 S3 相容物件儲存體上的 Parquet 檔案查詢資料。 如需詳細資訊,請參閱使用 PolyBase 將與 S3 相容物件儲存體中的 parquet 檔案虛擬化。 |
| 差異資料表格式 | PolyBase 現在能夠從 S3 相容物件儲存體、Azure 儲存體帳戶 V2 和 Azure Data Lake Storage Gen2 上儲存的差異資料表格式查詢 (唯讀) 資料。 如需更多資訊,請參閱 利用 PolyBase 虛擬化增量資料表 |
| 建立外部資料表作為選擇(CETAS) | PolyBase 現在可以使用 CETAS 來建立外部資料表,然後平行將 Transact-SQL SELECT 陳述式的結果匯出至 Azure Data Lake Storage Gen2、Azure 儲存體帳戶 V2 和 S3 相容物件儲存體。 如需詳細資訊,請參閱 CREATE EXTERNAL TABLE AS SELECT (CETAS)。 |
如需 SQL Server 2022 (16.x) 的更多新功能,請參閱 SQL Server 2022 的新功能。
提示
如需 SQL Server 2022 (16.x) 中的 PolyBase 功能教學課程,請參閱 SQL Server 2022 中的 PolyBase 使用者入門。
PolyBase 連接器
PolyBase 功能提供下列外部資料來源的連線能力:
| 外部資料來源 | SQL Server 2016-2019 與 PolyBase | SQL Server 2022 (16.x) 與 PolyBase | APS PDW | Azure Synapse Analytics |
|---|---|---|---|---|
| Oracle、MongoDB、Teradata | 讀取 | 讀取 | 否 | 否 |
| 一般 ODBC | 讀取 (僅限 Windows) | 讀取 (僅限 Windows) | 否 | 否 |
| Azure 儲存體 | 讀取/寫入 | 讀取/寫入 | 讀取/寫入 | 讀取/寫入 |
| Hadoop | 讀取/寫入 | 否 | 讀取/寫入 | 否 |
| SQL Server | 讀取 | 讀取 | 否 | 否 |
| 與 S3 相容的物件儲存體 | 否 | 讀取/寫入 | 否 | 否 |
- SQL Server 2022 (16.x) 和更新版本不支援 Hadoop。
- SQL Server 2016 (13.x) 推出了支援針對 Hadoop 和 Azure Blob 儲存體連線的 PolyBase。
- SQL Server 2019 (15.x) 引進了更多連接器,包括 SQL Server、Oracle、Teradata 和 MongoDB。
- SQL Server 2022 (16.x) 推出了 S3 相容儲存體連接器。
- SQL Server 2019 (15.x) 累積更新 19 現在推出 Oracle TNS 檔案的支援。
- SQL Server 2022 (16.x) 累積更新 2 現在推出 Oracle TNS 檔案的支援。
外部連接器的範例包括:
1 PolyBase 透過 SQL Server 2019 支援兩個 Hadoop 提供者,即 Hortonworks Data Platform (HDP) 和 Cloudera 分散式 Hadoop (CDH)。 對 HDFS Cloudera(CDP)及 Hortonworks(HDP)外部資料來源的 SQL Server 支援已退休,且不包含在 SQL Server 2022(16.x)及更新版本中。 如需詳細資訊,請參閱 Microsoft SQL Server 平台上的巨量資料選項。
若要使用 PolyBase,請在 SQL Server 的執行個體中:
- 在 Windows 上安裝 PolyBase 或在 Linux 上安裝 PolyBase。
- 從 SQL Server 2019 (15.x) 開始,如有必要,請在 sp_configure 中啟用 PolyBase。
- 建立外部資料來源
- 建立外部表格。
Azure 整合
有了 PolyBase 在後面的幫助,T-SQL 查詢也可以從 Azure Blob Storage 匯入及匯出資料。 此外,PolyBase 可讓 Azure Synapse Analytics 從 Azure Data Lake Store 與 Azure Blob 儲存體匯入及匯出資料。
為何要使用 PolyBase?
PolyBase 可讓您從 SQL Server 實例聯結數據與外部數據。 在 PolyBase 允許將資料聯結至外部數據源之前,您可以:
- 傳輸一半的資料,來使所有的資料集中於一處。
- 同時查詢兩個資料來源,然後撰寫自訂查詢邏輯以在用戶端層級聯結並整合資料。
PolyBase 可讓您使用 Transact-SQL 來聯結數據。
PolyBase 不需要您將額外的軟體安裝到 Hadoop 環境。 您可以使用與用來查詢資料庫資料表相同的 T-SQL 語法來查詢外部資料。 由 PolyBase 所實作的支援動作都同時自動發生。 查詢作者不需要任何外部來源的知識。
PolyBase 用途
PolyBase 可在 SQL Server 中啟用下列情節:
- 無縫資料存取: 使用 T-SQL 查詢其他 RDBM 或外部檔案,例如 CSV、Parquet 和 Delta Lake 資料表,就像它們是原生資料表一樣。
- 卸載冷資料: 同時保持易於訪問。
- 提高生產力: 減少整合和分析來自多個來源的資料所需的時間和精力。
- 成本效益: 最大限度地減少與傳統資料整合方法相關的資料複製和儲存成本的需求。
- 即時洞察: 實現即時資料查詢和洞察,而不會因資料移動或同步而造成延遲。
- 安全: 使用 SQL Server 安全性功能來取得細微的許可權、認證管理和控制。
效能
檔案數目或可查詢的資料量沒有硬性限制。 查詢效能取決於資料量、資料格式、資料組織方式,以及查詢和聯結的複雜性。
如需 PolyBase 效能指導和建議的詳細資訊,請參閱 PolyBase for SQL Server 中的效能考量。
升級到 SQL Server 2022
從 2022 SQL Server 2022 (16.x) Hortonworks Data Platform (HDP) 和 Cloudera Distributed Hadoop (CDH) 開始不再受到支援。 由於這些變更,您必須先手動卸除在舊版 SQL Server 上建立的 PolyBase 外部資料來源,這些 SQL Server 會使用 TYPE = HADOOP 或 Azure 儲存體,才能移轉至 SQL Server 2022 (16.x) 或更新版本。 卸除外部資料來源也需要卸除相關聯的資料庫物件,例如資料庫範圍認證和外部表格。
Azure 記憶體連接器必須根據下列參考資料表進行變更:
| 外部資料來源 | 寄件者 | 收件者 |
|---|---|---|
| Azure Blob 儲存體 | wasb[s] |
abs |
| ADLS 第 2 代 | abfs[s] |
adls |
開始
使用 PolyBase 之前,您必須在 Windows 上安裝 PolyBase 或在 Linux 上安裝 PolyBase,並在必要時在 sp_configure 中啟用 PolyBase。
如需 PolyBase 功能的教學課程,請參閱 SQL Server 2022 中的 PolyBase 使用者入門。
如需各種外部資料來源的更多教學課程,請參閱:
- Hadoop
- Azure Blob 儲存體
- SQL 伺服器
- 甲骨文
- Teradata
- MongoDB 資料庫
- ODBC 泛型類型
- 與 S3 相容的物件儲存體
- CSV 檔案
- Parquet 文件
- 差異資料表
其他平台上的資料虛擬化
其他平台上也提供資料虛擬化功能: