対象者:SQL Server 2016 (13.x) およびそれ以降のバージョン
Azure SQL Database
Azure SQL Managed Instance
SQL Database in Microsoft Fabric
データ仮想化 を使用すると、外部データをデータベースに読み込まずに、Transact-SQL (T-SQL) クエリを外部データに対して実行できます。 外部データ ソース、オプションのファイル形式、および外部テーブルを定義し、他のテーブルと同様に SELECT を使用して外部テーブルにクエリを実行します。
このガイドは、次のことに役立ちます。
- 対応する SQL プラットフォームとバージョンによってサポートされる PolyBase の機能を理解してください。
-
OPENROWSET、外部テーブル、およびデータのクエリまたは取り込みのBULK INSERTを選択します。 - 一般的なシナリオについては、ステップ バイ ステップのリンクに従ってください。
- 運用ワークロードのパフォーマンス、トラブルシューティング、ベスト プラクティスを確認します。
プラットフォームのサポート
- PolyBaseは、MicrosoftのSQL データベース エンジン機能で、データ仮想化を実装しています。
- PolyBaseはWindowsのSQL Server 2016以降のバージョン、LinuxのSQL Server 2019以降のバージョンでサポートされています。
- PolyBaseはLinux版SQL Server 2017ではサポートされていません。
- PolyBaseはAzure SQL Databaseではサポートされていませんが、Azure SQL Database
OPENROWSETや外部テーブルを通じて関連するデータ仮想化機能を提供しています。 詳細については、「 Azure SQL Database を使用したデータ仮想化 (プレビュー)」を参照してください。 - PolyBaseは名前の上Azure SQL Managed Instanceには機能していませんが、Azure SQL Managed Instanceには同様の動作をするデータ仮想化機能があります。 詳細については、「Azure SQL Managed Instance によるデータ仮想化」を参照してください。
- PolyBaseはFabricのSQLデータベースではサポートされていませんが、FabricのSQLデータベースはOneLakeのデータに対して独自のデータ仮想化機能を提供しています。 詳細については、FabricのSQLデータベースにおけるデータ仮想化をご覧ください。
- PolyBaseはFabric Data Warehouseの機能ではありません。 Fabric Data Warehouseでデータ仮想化を行う場合は、Fabric OneLake Shortcutsを検討してください。 Fabric Data Warehouseのデータ読み込みに関する記事については、T-SQLによるデータ取り込みおよび次元モデリング:テーブルの読み込みを参照してください。
一般的なユース ケース
次の表では、考えられる使用シナリオについて説明します。
| シナリオ | 用途 |
|---|---|
| アドホック ファイルの探索 | OPENROWSET(BULK ...) |
| BIやレポートのための再利用可能なファイルクエリ | ファイル上の外部テーブル |
| データベース間クエリ (SQL Server、Oracle、Teradata、MongoDB、ODBC) | 外部テーブルを含む PolyBase コネクタ |
| クエリ結果をファイルにエクスポートする |
CREATE EXTERNAL TABLE AS SELECT (CETAS) |
| テーブルへの一括取り込み |
BULK INSERT または OPENROWSET(BULK ...) と INSERT ... SELECT |
- アドホックファイル探索のために、再利用可能なテーブルを作成せずにファイルを検査するために
OPENROWSET(BULK ...)を使いましょう。 - BIやレポート作成のシナリオで再利用可能なファイルクエリを行う場合、ファイル上の外部テーブルを用いてスキーマを永続化し、クエリ間で結果を共有できます。
- クロスデータベースクエリの場合は、外部テーブルを持つPolyBaseコネクターを使ってSQL Server、Oracle、Teradata、MongoDB、またはODBCソースにアクセスします。
- クエリ結果をファイルにエクスポートする場合は、
CREATE EXTERNAL TABLE AS SELECT(CETAS)を使ってParquetやCSVの出力をデータベース外に書き込みます。 - テーブルへの一括取り込みには、
BULK INSERTまたはOPENROWSET(BULK ...)をINSERT ... SELECTでデータベーステーブルにファイルデータを読み込みます。
利用可能な機能はどこにありますか?
以下の表は、SQL Server 2019以降、各SQLプラットフォームで利用可能な主要なPolyBaseおよびデータ仮想化機能を示しています。 SQL Server 2016およびSQL Server 2017 on Windowsの機能利用可能性については、PolyBaseの機能と制限を参照してください。 この表を使用して、詳細なガイドを使用する前に、プラットフォームで何ができるかを判断します。
| 特徴 | SQL Server 2019 | SQL Server 2022 | SQL Server 2025 | Azure SQL Database | Azure SQL Managed Instance | Microsoft Fabric の SQL データベース |
|---|---|---|---|---|---|---|
| 外部テーブル | はい | はい | はい | はい | はい | はい |
| OPENROWSET (BULK) | はい 1 | はい | はい | はい | はい | はい |
| CETAS (エクスポート) | いいえ | はい | はい | いいえ | はい | いいえ |
| CSV/区切りファイル | はい 2 | はい | はい | はい | はい | はい |
| Parquet ファイル | いいえ | はい | はい | はい | はい | はい |
| Delta Lake テーブル | いいえ | はい | はい | いいえ | いいえ | いいえ |
| 別の SQL Server に接続する | はい | はい | はい | いいえ | いいえ | いいえ |
| Azure SQL Database または Azure SQL Managed Instance に接続する | はい 3 | はい 3 | はい 3 | いいえ | いいえ | いいえ |
| Oracle/Teradata/MongoDB への接続 | はい | はい | はい | いいえ | いいえ | いいえ |
| Azure Blob Storage に接続する | はい | はい | はい | はい | はい | いいえ |
| ADLS Gen2 に接続する | はい 5 | はい | はい | はい | はい | いいえ |
| S3 互換ストレージに接続する | いいえ | はい | はい | いいえ | いいえ | いいえ |
| OneLake に接続する (Fabric) | いいえ | いいえ | いいえ | いいえ | いいえ | はい |
| プッシュダウン計算 | はい | はい | はい | いいえ | いいえ | いいえ |
| マネージド ID 認証 | いいえ | いいえ | はい 4 | はい | はい | いいえ |
1 SQL Server 2019 (15.x) では、ローカル およびネットワーク ファイル パスの OPENROWSET(BULK...) がサポートされます。 SQL Server 2022 (16.x) 以降のバージョンでは、 OPENROWSET(BULK...) では、 FORMAT = 'PARQUET'、 FORMAT = DELTA、 FORMAT = 'CSV'を使用したクラウド ストレージからの読み取りもサポートされています。
SQL Server 2019 (15.x) での 2 つの CSV サポートには Hadoop が必要です。 SQL Server 2022 (16.x) 以降のバージョンでは、CSV は Hadoop なしでネイティブにサポートされています。
3 SQL Server コネクタ (sqlserver://) を使用します。 データベーススコープ認証情報はSQLエンドポイントを対象とします。 他のSQL Serverインスタンスに接続する際と同じ手順を用いてください。
4 マネージド ID 認証は、Azure Blob Storage (ABS) と ADLS Gen2 に接続するためにサポートされています。 オンプレミスの SQL Server 用の Azure VM 上の Azure Arc 対応 SQL Server または SQL Server が必要です。 Azure SQL Database と Azure SQL Managed Instance でネイティブに使用できます。
5 SQL Server 2019 CU11以降のバージョンは、abfsまたは abfss プレフィックスの付Azure Data Lake Storage Gen2をサポートします。 SQL Server 2022年以降のバージョンでは、adlsの接頭辞を使用してください。
- 外部テーブルはSQL Server 2019、SQL Server 2022、SQL Server 2025、Azure SQL Database、Azure SQL Managed Instance、Microsoft FabricのSQL Databaseでサポートされています。
-
OPENROWSET (BULK)SQL Server 2019、SQL Server 2022、SQL Server 2025、Azure SQL Database、Azure SQL Managed Instance、およびMicrosoft FabricのSQLデータベースでサポートされています。 SQL Server 2019はローカルおよびネットワークファイルパスをサポートし、2022年以降SQL ServerFORMAT = 'PARQUET'、FORMAT = DELTA、FORMAT = 'CSV'のクラウドストレージの読み込みもサポートしています。 - CETASエクスポートはSQL Server 2019、Azure SQL Database、Microsoft FabricのSQLデータベースではサポートされていません。 CETASエクスポートはSQL Server 2022、SQL Server 2025、Azure SQL Managed Instanceでサポートされています。
- CSVおよび区切りファイルは、SQL Server 2019、SQL Server 2022、SQL Server 2025、Azure SQL Database、Azure SQL Managed Instance、およびMicrosoft FabricのSQL Databaseでサポートされています。 SQL Server 2019はCSVサポートのためにHadoopを必要とし、SQL Server 2022以降のバージョンはHadoopなしでネイティブにCSVをサポートしています。
- ParquetファイルはSQL Server 2019ではサポートされていません。 ParquetファイルはSQL Server 2022、SQL Server 2025、Azure SQL Database、Azure SQL Managed Instance、Microsoft FabricのSQL databaseでサポートされています。
- Delta Lakeのテーブルは、SQL Server 2019、Azure SQL Database、Azure SQL Managed Instance、またはMicrosoft FabricのSQL Databaseではサポートされていません。 Delta LakeテーブルはSQL Server 2022およびSQL Server 2025でサポートされています。
- SQL Server 2019、SQL Server 2022、SQL Server 2025では、他のSQL Serverインスタンスへの接続がサポートされています。 Azure SQL Database、Azure SQL Managed Instance、またはMicrosoft FabricのSQLデータベースからは、他のSQL Serverインスタンスへの接続はサポートされていません。
- SQL Server 2019、SQL Server 2022、SQL Server 2025からSQL Serverコネクターを使用して、Azure SQL DatabaseやAzure SQL Managed Instanceへの接続がサポートされています。 データベーススコープ認証情報はAzure SQL DatabaseまたはAzure SQL Managed Instanceエンドポイントを対象とし、設定手順は他のSQL Serverインスタンスに接続する場合と同じです。 これらの接続は、Azure SQL Database、Azure SQL Managed Instance、またはMicrosoft FabricのSQL Databaseからはサポートされていません。
- Oracle、Teradata、またはMongoDBへの接続は、SQL Server 2019、SQL Server 2022、SQL Server 2025からサポートされています。 これらの接続は、Azure SQL Database、Azure SQL Managed Instance、またはMicrosoft FabricのSQL Databaseからはサポートされていません。
- Azure Server 2019、SQL Server 2022、SQL Server 2025、Azure SQL Database、Azure SQL Managed Instance からAzure Blob Storageへの接続がサポートされています。 Microsoft FabricのSQLデータベースからはAzure Blob Storageへの接続がサポートされていません。
- ADLS Gen2への接続は、CU11以前のSQL Server 2019リリースやMicrosoft FabricのSQLデータベースからの接続をサポートしていません。 ADLS Gen2への接続はSQL Server 2019 CU11から、SQL Server 2022、SQL Server 2025、Azure SQL Database、Azure SQL Managed Instanceでもサポートされています。
- SQL Server 2019、Azure SQL Database、Azure SQL Managed Instance、Microsoft FabricのSQL Databaseでは、S3互換ストレージへの接続はサポートされていません。 S3互換ストレージへの接続は、SQL Server 2022およびSQL Server 2025からサポートされています。
- OneLakeへの接続は、Microsoft FabricのSQLデータベースからサポートされています。 SQL Server 2019、SQL Server 2022、SQL Server 2025、Azure SQL Database、Azure SQL Managed InstanceではOneLakeへの接続はサポートされていません。
- プッシュダウン計算はSQL Server 2019、SQL Server 2022、SQL Server 2025でサポートされています。 Azure SQL Database、Azure SQL Managed Instance、Microsoft FabricのSQLデータベースではプッシュダウン計算はサポートされていません。
- 管理型ID認証はSQL Server 2019およびSQL Server 2022ではサポートされていません。 管理されたID認証は、SQL Server 2025でAzure Blob StorageおよびADLS Gen2への接続に対応しており、Azure Arc対応のSQL ServerまたはAzure仮想マシン上のSQL Serverが必要です。 マネージドID認証はAzure SQL DatabaseおよびAzure SQL Managed Instanceでもサポートされていますが、Microsoft FabricのSQLデータベースではサポートされていません。
注
SQL Server 2025 (17.x) 以降では、Azure Blob Storage、ADLS Gen2、または S3 互換ストレージ上のデータ ファイル (CSV、Parquet、デルタ) に対してクエリを実行することはネイティブ エンジン機能であり、PolyBase サービスをインストールまたは実行する必要がなくなりました。 RDBMS コネクタ (SQL Server、Oracle、Teradata、MongoDB、ODBC) では、PolyBase サービスをインストールして実行する必要があります。 SQL Server 2025 (17.x) では、以前は Windows でのみ使用できたこれらのコネクタに対する Linux サポートも追加されています。
外部データに対してクエリを実行する
特定のシナリオを選択する前に、外部データのクエリを実行する 3 つの方法を理解してください。
| 方法 | 構文 | 次の場合に使用します。 | 認証 | ポリベースの設置が必要です |
|---|---|---|---|---|
| OLE DB アドホック クエリ | OPENROWSET(provider, connection, query) |
永続的なオブジェクトを使用せずに 1 回限りすばやくクエリを実行する場合、または Microsoft Entra ID 認証が必要な場合 | SQL 認証、Windows 認証、Microsoft Entra ID (MSOLEDBSQL) | いいえ |
| ファイルに対するアドホッククエリ | OPENROWSET(BULK ...) |
テーブルを作成する前に、ファイル データをすばやく調べるか、スキーマをテストする必要がある | SAS トークン、アクセス キー、マネージド ID、Microsoft Entra ID | SQL Server 2022: はい 1 SQL Server 2025以降のバージョン:いいえ Azure SQL Database、Azure SQL Managed Instance、および Fabric の SQL データベース: 組み込み |
| 永続データ コネクタ |
CREATE EXTERNAL TABLE
sqlserver://、oracle://、teradata://など |
運用には、定期的なアクセス、ガバナンス、統計、プッシュダウンの計算が必要です | SQL 認証のみ | はい |
1 SQL Server 2022(16.x)でクラウドファイルにアクセスするにはPolyBase機能をインストールする必要がありますが、Azure Blob Storage、ADLS Gen2、S3互換ストレージコネクターはPolyBaseサービスに依存しません。 SQL Server 2025(17.x)以降のバージョンは、PolyBaseサービスのインストールや実行をせずにCSV、Parquet、Deltaをネイティブサポートしています。
- OLE DBのアドホッククエリは、永続オブジェクトを作成せずにリモートデータソースへの一度きりの迅速なアクセスのために
OPENROWSET(provider, connection, query)を使用します。 SQL認証、Windows 認証、またはMSOLEDBSQLと組み合わせたMicrosoft Entra IDを利用できます。 このシナリオではPolyBaseの設置は必要ありません。 - ファイルに対するアドホッククエリは、ファイルデータを素早く探索したり、テーブルを作成する前にスキーマをテストしたりするために、この
OPENROWSET(BULK ...)を使います。 SASトークン、アクセスキー、マネージドアイデンティティ、またはMicrosoft Entra IDを使用できます。 SQL Server 2022はクラウドファイル用のPolyBase機能インストールが必要ですが、PolyBaseサービスは必須ではありません。 SQL Server 2025以降のバージョンでは、クラウドファイルにPolyBaseは必要ありません。 ファイルアドホッククエリはAzure SQL Database、Azure SQL Managed Instance、FabricのSQL Databaseに組み込まれています。 - 永続的なデータコネクターは、本番ワークロードにおける定期的なアクセス、ガバナンス、統計、プッシュダウン計算のために、
sqlserver://、oracle://、teradata://などの場所と共に、CREATE EXTERNAL TABLEを使用します。 SQL認証とPolyBaseサービスが必要です。
意思決定ガイド
| シナリオ | レコメンデーション |
|---|---|
| リモートSQLにはMicrosoft Entra ID認証が必要な場合、PolyBaseサービスは避けたい場合もあります。 |
OPENROWSET(MSOLEDBSQL, ...)(アドホック、永続オブジェクトなし)を使いましょう。 |
| 永続的なテーブル、統計、またはリモートデータベースへのプッシュダウン計算が必要です。 | PolyBase コネクタ (CREATE EXTERNAL TABLE、sqlserver://、oracle://、teradata://、mongodb://) でodbc://を使用します。
OPENROWSET コネクターをサポートしていません。 |
| 新しいファイルを探索したり、スキーマをテストしたりしています。 |
OPENROWSET(BULK ...)を使いましょう(高速反復、永続オブジェクトなし)。 |
| ファイルデータを変換付きのテーブルに取り込みます。 |
INSERT ... SELECTからOPENROWSET(BULK ...)を使用します。 |
| 多くのユーザーやアプリケーションに対してガバナンスや共有アクセスが必要です。 | 権限とメタデータを集中管理するために CREATE EXTERNAL TABLE を使いましょう。 |
| あなたはFabricでSQLデータベースを扱っています。 | アドホックのOneLakeクエリには OPENROWSET(BULK ...) を、再利用可能なアクセスには外部テーブルを使い、外部ストレージにはOneLakeショートカットをご利用ください。 |
- リモートSQLの認証Microsoft Entra IDが必要な場合やPolyBaseサービスを避けたい場合は、永続オブジェクトを使わずにアドホックのリモートクエリに使う
OPENROWSET(MSOLEDBSQL, ...)を使いましょう。 - 永続的なテーブル、統計、またはリモートデータベースへのプッシュダウン計算が必要な場合は、
sqlserver://、oracle://、teradata://、mongodb://、odbc://などのPolyBaseコネクタとCREATE EXTERNAL TABLEを組み合わせて使用してください。OPENROWSETこれらのコネクタをサポートしていません。 - 新しいファイルを探索したりスキーマをテストしたりする場合は、速い反復と永続オブジェクトを使わないために
OPENROWSET(BULK ...)を使いましょう。 - ファイルを変換付きのテーブルに取り込む場合は、
OPENROWSET(BULK ...)のINSERT ... SELECTを使いましょう。 - 多くのユーザーやアプリケーションに対してガバナンスや共有アクセスが必要な場合は、権限やメタデータを集中管理するために権限
CREATE EXTERNAL TABLEを使いましょう。 - FabricでSQLデータベースを扱う場合は、アドホックのOneLakeクエリには
OPENROWSET(BULK ...)を使い、再利用可能なアクセスには外部テーブルを使い、外部ストレージにはOneLakeショートカットを使いましょう。
シナリオを選択する
3 つの方法を理解したら、次のいずれかのガイドを使用して、特定のユース ケースを実装します。
ファイルのクエリ (Parquet、CSV、またはデルタ)
データが Azure Blob Storage、ADLS Gen2、S3 互換ストレージ、または OneLake 上の Parquet、CSV、または Delta ファイルにある場合は、次のいずれかのガイドに従います。
| シナリオ | 推奨ガイド | プラットフォーム |
|---|---|---|
| Parquet または CSV ファイルに対するクイック アドホック クエリ |
OPENROWSET を使用してください。 外部テーブルは必要ありません |
SQL Server 2022 (16.x) 以降のバージョン、Azure SQL Database、Azure SQL Managed Instance、Fabric の SQL データベース |
| 永続的なスキーマを使用した Parquet ファイルに対するクエリの繰り返し | Parquet で外部テーブルを作成する | SQL Server 2022 (16.x) 以降のバージョン、Azure SQL Database、Azure SQL Managed Instance、Fabric の SQL データベース |
| 外部テーブルを使用して CSV ファイルにクエリを実行する | 区切りテキストのファイル形式で外部テーブルを作成する | SQL Server 2019 (15.x) 以降のバージョン、Azure SQL Database、Azure SQL Managed Instance、Fabric の SQL データベース |
| Delta Lake テーブルのクエリを実行する | を使用して外部テーブルを作成する FILE_FORMAT = DeltaLakeFileFormat |
SQL Server 2022 (16.x) 以降のバージョン |
| クエリ結果 を Parquet または CSV ファイルにエクスポートする (CETAS) |
CREATE EXTERNAL TABLE AS SELECT を使用する |
SQL Server 2022 (16.x) 以降のバージョン、Azure SQL Managed Instance |
- ParquetやCSVファイルで簡単なアドホッククエリをするには
OPENROWSETをご利用ください。 この方法は外部テーブルを必要としません。 SQL Server 2022(16.x)以降のバージョン、Azure SQL Database、Azure SQL Managed Instance、FabricのSQL Database Blockはこのパターンをサポートしています。 - 永続スキーマを持つParquetファイルに対して繰り返しクエリを行う場合は、Parquetの上に外部テーブルを使いましょう。 SQL Server 2022(16.x)以降のバージョン、Azure SQL Database、Azure SQL Managed Instance、FabricのSQL Database Blockはこのパターンをサポートしています。
- CSVファイルのクエリでは、区切られたテキスト用のファイル形式を持つ外部テーブルを使いましょう。 SQL Server 2019(15.x)以降のバージョン、Azure SQL Database、Azure SQL Managed Instance、FabricのSQL Database Commandはこのパターンをサポートしています。
- デルタレイクテーブルでのクエリには、
FILE_FORMAT = DeltaLakeFileFormatの外部テーブルを使用します。 SQL Server 2022(16.x)以降のバージョンはこのパターンをサポートしています。 - クエリ結果をParquetやCSVファイルにエクスポートする場合は
CREATE EXTERNAL TABLE AS SELECTをご利用ください。 SQL Server 2022(16.x)以降のバージョンとAzure SQL Managed Instanceはこのパターンをサポートしています。
次のいずれかのステップ バイ ステップ チュートリアルに従うこともできます。
| チュートリアル | 説明 |
|---|---|
| SQL Server 2022 の PolyBase の概要 | Parquet と CSV、外部テーブル、フォルダ ナビゲーションを用いた OPENROWSET で処理します。 |
| PolyBase を使用して S3 互換オブジェクト ストレージ内の Parquet ファイルを仮想化する | SQL Server 2022 (16.x) 以降のバージョンのチュートリアル。 |
| PolyBase を使用して CSV ファイルを仮想化する | SQL Server 2022 (16.x) 以降のバージョンのチュートリアル。 |
| PolyBase を使用してデルタ テーブルを仮想化する | SQL Server 2022 (16.x) 以降のバージョンのチュートリアル。 |
| Azure SQL Database を使用したデータ仮想化 (プレビュー) | Parquet および CSV 用の Azure SQL Database ガイド。 |
| Azure SQL Managed Instance によるデータ仮想化 | Parquet、CSV、および CETAS 用の Azure SQL Managed Instance ガイド。 |
| FabricのSQLデータベースにおけるデータ仮想化 | OneLake ファイルのための「ファブリック」内のSQLデータベースガイド。 |
別の SQL Server インスタンス、Azure SQL Database、または SQL Managed Instance に接続する
SQL Server 2019 (15.x) 以降のバージョンでは、PolyBase では、リンク サーバーを使用せずに、別の SQL Server インスタンス、Azure SQL Database、または Azure SQL Managed Instance のテーブルに対してクエリを実行できます。
Important
sqlserver:// コネクタは、Fabric の SQL データベースではサポートされていません。 PolyBase RDBMS コネクタでは、 CREATE DATABASE SCOPED CREDENTIAL を介した SQL 認証が使用され、Microsoft Entra ID、マネージド ID、またはサービス プリンシパル認証はサポートされません。 Fabric の SQL データベースには Microsoft Entra 認証が必要であるため、PolyBase を使用して接続することはできません。
| Step | 何をすべきか |
|---|---|
| 1. PolyBase をインストールする | Windows に PolyBase をインストールするか、Linux に PolyBase をインストールする |
| 2. 資格情報を作成する |
CREATE DATABASE SCOPED CREDENTIAL とターゲット ログインの使用 |
| 3. 外部データ ソースを作成する | CREATE EXTERNAL DATA SOURCE ... WITH (LOCATION = 'sqlserver://<server>') |
| 4. 外部テーブルを作成する | CREATE EXTERNAL TABLE ... WITH (LOCATION = '<db>.<schema>.<table>') |
| 5. クエリ | SELECT * FROM <external_table> |
-
- 外部SQLデータへのアクセスを設定する前に、WindowsまたはLinuxでPolyBaseをインストールしてください。WindowsにPolyBaseをインストールしてください。
-
-
CREATE DATABASE SCOPED CREDENTIALを使ってターゲットのログインでデータベーススコープ付きの認証情報を作成し、エンジンがリモートサーバーに認証できるようにします。
-
-
- リモートSQL Server用の外部データソースを作成し、
CREATE EXTERNAL DATA SOURCE ... WITH (LOCATION = 'sqlserver://<server>')を使いましょう。
- リモートSQL Server用の外部データソースを作成し、
-
- リモートテーブルを表現するために
CREATE EXTERNAL TABLE ... WITH (LOCATION = '<db>.<schema>.<table>')を使って外部テーブルを作成します。
- リモートテーブルを表現するために
-
- 外部テーブルには
SELECT * FROM <external_table>を使ってクエリします。
- 外部テーブルには
ヒント
SQL Server コネクタ (sqlserver://) は、Azure SQL Database と Azure SQL Managed Instance でも機能します。 同じ手順を使い、LOCATIONをAzure SQL DatabaseまたはAzure SQL Managed Instance端点(例:sqlserver://myserver.database.windows.net)に設定します。
詳細なガイドについては、「 SQL Server の外部データにアクセスするように PolyBase を構成する」を参照してください。
Oracle、Teradata、または MongoDB に接続する
SQL Server 2019 (15.x) 以降のバージョンでは、PolyBase ODBC コネクタを使用して Oracle、Teradata、MongoDB、Cosmos DB に対してクエリを実行できます。
| データ ソース | ガイド | 必要条件 |
|---|---|---|
| Oracle | Oracle 上の外部データにアクセスするための PolyBase の構成 | SQL Server 2019 (15.x) 以降のバージョン、Oracle クライアント ドライバー |
| Teradata | Teradata 上の外部データにアクセスするための PolyBase の構成 | SQL Server 2019 (15.x) 以降のバージョン、Teradata ODBC ドライバー |
| MongoDB/Cosmos DB | MongoDB 上の外部データにアクセスするための PolyBase の構成 | SQL Server 2019 (15.x) 以降のバージョン、MongoDB ODBC ドライバー |
| 任意の ODBC ソース | ODBC ジェネリック型の外部データにアクセスするための PolyBase の構成 | SQL Server 2019 (15.x) 以降のバージョン (Windows) (SQL Server 2025 (17.x) 以降の Linux) |
- OracleのデータソースはOracleガイドの外部データにアクセスするためにConfigure PolyBaseを使用し、SQL Server 2019(15.x)以降のバージョンとOracleクライアントドライバーが必要です。
- Teradataのデータソースは、Teradataガイドの外部データにアクセスするためにConfigure PolyBaseを使用し、SQL Server 2019(15.x)以降のバージョンとTeradata ODBCドライバーが必要です。
- MongoDBまたはCosmos DBのデータソースは、MongoDBガイドで外部データにアクセスするためにPolyBase構成を使用し、SQL Server 2019(15.x)以降のバージョンとMongoDB ODBCドライバーが必要です。
- どの ODBC ソースでも、「ODBC ジェネリック型を使用して外部データにアクセスするように PolyBase を構成する」ガイドを利用できます。これを利用するには、Windows では SQL Server 2019 (15.x) 以降、Linux では SQL Server 2025 (17.x) 以降が必要です。
Azure Blob Storage または ADLS Gen2 に接続する
| SQL プラットフォーム | 認証オプション | ガイド |
|---|---|---|
| SQL Server 2022 (16.x) 以降のバージョン | SAS トークン、アクセス キー、マネージド ID (SQL Server 2025 (17.x) 以降) | Azure Blob Storage の外部データにアクセスするように PolyBase を構成する |
| SQL Server 2019 (15.x) | アクセス キー (Hadoop コネクタ経由) | Azure Blob Storage の外部データにアクセスするように PolyBase を構成する |
| Azure SQL Database | SAS トークン、マネージド ID、Microsoft Entra パススルー | Azure SQL Database を使用したデータ仮想化 (プレビュー) |
| Azure SQL Managed Instance | SAS トークン、マネージド ID | Azure SQL Managed Instance によるデータ仮想化 |
- 2022 SQL Server以降のバージョンでは、2025 SQL Server(17.x)からSASトークン、アクセスキー、またはマネージドIDを用いてAzure Blob StorageまたはADLS Gen2認証をサポートしています。 詳細については、「 Azure Blob Storage の外部データにアクセスするように PolyBase を構成する」を参照してください。
- SQL Server 2019は、Hadoopコネクタを通じてアクセスキーを使うことでAzure Blob StorageまたはADLS Gen2をサポートしています。 詳細については、「 Azure Blob Storage の外部データにアクセスするように PolyBase を構成する」を参照してください。
- Azure SQL Databaseは、SASトークン、マネージドアイデンティティ、またはMicrosoft Entraパススルー認証を用いてAzure Blob StorageまたはADLS Gen2をサポートしています。 詳細については、「 Azure SQL Database を使用したデータ仮想化 (プレビュー)」を参照してください。
- Azure SQL Managed Instanceは、SASトークンまたはマネージド・アイデンティティを用いてAzure Blob StorageまたはADLS Gen2をサポートしています。 詳細については、「Azure SQL Managed Instance によるデータ仮想化」を参照してください。
SQL Server 2022 (16.x) では、URI プレフィックスが変更されました。 SQL Server 2019 (15.x) 以前のバージョンから移行する場合:
-
Azure Blob Storage:
wasb[s]://を次の値に変更するabs:// -
ADLS Gen2:
abfs[s]://をadls://に変更する
詳細については、「 Azure Blob Storage の外部データにアクセスするように PolyBase を構成する」を参照してください。
S3 互換オブジェクト ストレージに接続する
SQL Server 2022 (16.x) 以降のバージョンでは、Amazon S3、MinIO、Ceph などの S3 互換ストレージがサポートされています。
詳しくは、「S3 互換オブジェクト ストレージの外部データにアクセスするように PolyBase を構成する」をご覧ください。
CREATE EXTERNAL TABLE AS SELECT (CETAS) を使用してデータをエクスポートする
CETAS は、Azure Blob Storage、ADLS Gen2、または S3 互換ストレージの外部ファイル (Parquet または CSV) にクエリ結果をエクスポートします。
| SQL プラットフォーム | サポートされている | エクスポート形式 | メモ |
|---|---|---|---|
| SQL Server 2022(16.x)以降のバージョンです。 CETASでADLS Gen2にエクスポートするには、SQL Server 2022 CU5以降のバージョンが必要です。 | はい | Parquet、CSV | サーバー設定が必要です:ポリベースのエクスポートを許可します。 |
| Azure SQL Managed Instance | はい | Parquet、CSV | 既定では無効 |
| Azure SQL Database | いいえ | なし | 該当なし |
| Fabric の SQL データベース | いいえ | なし | 該当なし |
- SQL Server 2022以降のバージョンはCETASをサポートし、ParquetおよびCSVファイルのエクスポートが可能です。 サーバー設定:polybaseエクスポートを許可する設定が必要です。 CETASのADLS Gen2へのエクスポートは、CU5以前のSQL Server 2022リリースでは利用できません。
- Azure SQL Managed InstanceはCETASをサポートし、ParquetおよびCSVファイルをエクスポートします。 デフォルトで無効化されたガイダンスは、そのデフォルト状態を説明しています。
- Azure SQL DatabaseはCETASをサポートしていません。
- FabricのSQLデータベースはCETASをサポートしていません。
Transact-SQL リファレンスについては、 CREATE EXTERNAL TABLE AS SELECT (CETAS) を参照してください。
簡単スタートの例
例 1: Parquet ファイルに対するアドホック クエリ (OPENROWSET)
外部テーブルは必要ありません。 SQL Server 2022 (16.x) 以降のバージョン、Azure SQL Database、Azure SQL Managed Instance、および Fabric の SQL データベースで動作します。
SELECT TOP 10 *
FROM OPENROWSET (
BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet',
FORMAT = 'PARQUET'
) AS [result];
例 2: Azure Blob Storage の CSV 上の外部テーブル
この例は、CSVファイル上の外部テーブルをサポートするすべてのSQLプラットフォームで動作します。
手順 1: データベース マスター キー (DMK) を作成します。 資格情報には SAS トークン シークレットが格納されるため、この手順が必要です。 ただし、マネージデンティティIDやMicrosoft Entra認証を使う場合はこのステップを省略できます。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';手順 2: SAS トークンを使用して資格情報を作成する。 先頭の
?を省略します。CREATE DATABASE SCOPED CREDENTIAL MyStorageCred WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<your_SAS_token>'; -- omit the leading '?'手順 3: 外部データ ソースを作成する。
CREATE EXTERNAL DATA SOURCE MyAzureStorage WITH ( LOCATION = 'abs://mycontainer@mystorageaccount.blob.core.windows.net', CREDENTIAL = MyStorageCred );手順 4: CSV のファイル形式を作成します。
CREATE EXTERNAL FILE FORMAT CsvFormat WITH ( FORMAT_TYPE = DELIMITEDTEXT, FORMAT_OPTIONS ( FIELD_TERMINATOR = ',', STRING_DELIMITER = '"', FIRST_ROW = 2 ) );手順 5: 外部テーブルを作成します。
CREATE EXTERNAL TABLE dbo.SalesExternal ( OrderId INT, OrderDate DATE, Amount DECIMAL (18, 2), Customer NVARCHAR (100) ) WITH ( DATA_SOURCE = MyAzureStorage, LOCATION = '/data/sales/', FILE_FORMAT = CsvFormat );手順 6: 外部テーブルに対してクエリを実行します。
SELECT * FROM dbo.SalesExternal WHERE OrderDate >= '2025-01-01';
例 3: 別の SQL Server のテーブルに対してクエリを実行する
この例は、SQL Server 2019 (15.x) 以降のバージョンで動作します。
手順 1: データベース マスター キーを作成する (資格情報にパスワードが格納されるため必要)。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';手順 2: リモート SQL Server インスタンスの資格情報を作成します。
CREATE DATABASE SCOPED CREDENTIAL RemoteSqlCred WITH IDENTITY = 'remote_user', SECRET = '<password>';手順 3: 外部データ ソースを作成します。
CREATE EXTERNAL DATA SOURCE RemoteSqlServer WITH ( LOCATION = 'sqlserver://remote-server.contoso.com', PUSHDOWN = ON, CREDENTIAL = RemoteSqlCred );手順 4: 外部テーブル (
LOCATIONの 3 部構成の名前) を作成します。CREATE EXTERNAL TABLE dbo.RemoteCustomers ( CustomerId INT, CustomerName NVARCHAR (200) COLLATE SQL_Latin1_General_CP1_CI_AS ) WITH ( DATA_SOURCE = RemoteSqlServer, LOCATION = 'SalesDB.dbo.Customers' );手順 5: サーバー間でクエリを実行する。
SELECT c.CustomerName, s.Amount FROM dbo.RemoteCustomers AS c INNER JOIN dbo.LocalSales AS s ON c.CustomerId = s.CustomerId;
例 4: CETAS を使用して Parquet に結果をエクスポートする
SQL Server 2022 (16.x) 以降のバージョンの Azure SQL Managed Instance で動作します。
手順 1: CETAS を有効にする (SQL Server のみ)。
EXECUTE sp_configure 'allow polybase export', 1; RECONFIGURE;手順 2: 資格情報とデータ ソースを作成する (前の例から再利用)。
手順 3: Parquet エクスポート用のファイル形式を作成する。
CREATE EXTERNAL FILE FORMAT ParquetFormat WITH ( FORMAT_TYPE = PARQUET );手順 4: クエリ結果をエクスポートする。
CREATE EXTERNAL TABLE dbo.Sales2025Export WITH ( DATA_SOURCE = MyAzureStorage, LOCATION = '/exports/sales_2025.parquet', FILE_FORMAT = ParquetFormat ) AS SELECT * FROM Sales.Orders WHERE OrderDate >= '2025-01-01';
PolyBase の T-SQL 構成要素
シナリオを実装する前に、PolyBase で使用される主要な T-SQL オブジェクトとその組み合わせについて理解してください。
認証 (データベース マスター キー、資格情報) からデータ ソースとファイル形式、クエリ メソッド (外部テーブル、OPENROWSET、 BULK INSERT、CETAS) までの PolyBase T-SQL オブジェクトとそのリレーションシップを示す図。
- 外部データソースの構文については CREATE EXTERNAL DATA SOURCEを参照してください。
- 外部ファイル形式の構文については、 CREATE EXTERNAL FILE FORMATを参照してください。
- 外部テーブル構文については、 CREATE EXTERNAL TABLEを参照してください。
- アドホックのデータアクセス構文については 、OPENROWSETを参照してください。
- CETASの構文については、CREATE EXTERNAL TABLE AS SELECT(CETAS)を参照してください。
すべてのオブジェクトの完全な Transact-SQL リファレンスについては、「 PolyBase Transact-SQL リファレンス」を参照してください。
Important
外部ファイル形式のデータ型マッピングを確認します。 外部ファイル形式を作成するか、 OPENROWSETを使用してファイルにクエリを実行すると、PolyBase はソース データ型 (Parquet、CSV、Delta、Oracle、Teradata、MongoDB) を SQL Server データ型に自動的にマップします。 型の不一致は、サイレント切り捨て、精度の低下、またはクエリ エラーを引き起こす可能性があります。 たとえば、Parquet DECIMAL(38,18) は DECIMAL(18,0)にマップされます。 外部テーブル列または WITH 句を定義する前に、マッピング テーブルを確認します。 完全なリファレンスについては、「 PolyBase を使用した型マッピング」を参照してください。
いつ CREATE MASTER KEYが必要ですか?
データベース マスター キー (DMK) は、 CREATE MASTER KEY 構文を使用して作成されます。 DMK は、データベース スコープの資格情報内に格納されているシークレットを暗号化します。 資格情報にシークレット値が含まれている場合、つまりパスワード、トークン、またはアクセス キーを格納する場合にのみ必要です。
DMK が必要です (資格情報にはシークレットが格納されます)。
認証の種類 IDENTITY値シークレットがある Dmk SAS トークン 'SHARED ACCESS SIGNATURE'はい 必須 S3 アクセス キー 'S3 ACCESS KEY'はい 必須 SQL ログイン/基本認証 '<username>'はい 必須 ストレージ アカウント アクセス キー '<storage_account_name>'はい 必須 - SASトークン認証は
IDENTITY = 'SHARED ACCESS SIGNATURE'を使用し、秘密の値を保存するため、データベースのマスターキーが必要です。 - S3アクセスキーの認証情報は
IDENTITY = 'S3 ACCESS KEY'を使用し、秘密の値を保存するため、データベースのマスターキーが必要です。- SQLログインや基本的な認証認証は
IDENTITY = '<username>'を使用し、秘密値を保存するため、データベースのマスターキーが必要です。
- SQLログインや基本的な認証認証は
- ストレージアカウントアクセスキーの認証情報は
IDENTITY = '<storage_account_name>'を使用し、秘密の値を保存するため、データベースのマスターキーが必要です。
- SASトークン認証は
DMK は必要ありません (シークレットは格納されません)。
認証の種類 IDENTITY値シークレットがある Dmk マネージド ID 'Managed Identity'いいえ 必須ではない Microsoft Entra ID 'User Identity'または'Managed Identity'いいえ 必須ではない - マネージドID認証は
IDENTITY = 'Managed Identity'を使い、秘密を保存しないため、データベースのマスターキーを必要としません。 - Microsoft Entra ID認証は
IDENTITY = 'User Identity'またはIDENTITY = 'Managed Identity'を使い、秘密を保存しないため、データベースのマスターキーを必要としません。
- マネージドID認証は
ヒント
CREATE DATABASE SCOPED CREDENTIALステートメントに秘密情報が含まれていなければ、DMKは必要ありません。 マネージド ID と Microsoft Entra ID 認証は、プラットフォームへの信頼を委任します。 データベースにはパスワードやトークンは格納されません。
例:
このクエリ例では、DMK が必要です (資格情報は SAS トークンを格納します)。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL SasCred
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<your_SAS_token>';
このクエリ例では、DMK は必要ありません (マネージド ID、シークレットなし)。
CREATE DATABASE SCOPED CREDENTIAL ManagedIdentityCred
WITH IDENTITY = 'Managed Identity';
このクエリ例では、DMK は必要ありません (Microsoft Entra パススルー、シークレットなし)。
CREATE DATABASE SCOPED CREDENTIAL EntraIdCred
WITH IDENTITY = 'User Identity';
OPENROWSET および外部テーブルを使用したリモート データ アクセス
SQL Server には、リモート データのクエリを実行するための 3 つの異なるアプローチが用意されています。 構文、認証、アーキテクチャの違いを理解している場合は、適切なアプローチを選択できます。
| 方法 | 構文 | 接続先 | 認証 | PolyBase サービス | プラットフォーム |
|---|---|---|---|---|---|
| OLE DB クエリ | OPENROWSET(provider, connection, query) |
MSOLEDBSQL、SQLOLEDB、またはその他のプロバイダーを介した OLE DB ソース | SQL 認証、Windows 認証、Microsoft Entra ID (MSOLEDBSQL) | いいえ | SQL Server (サポートされているすべてのバージョン) |
| SQL Server 2022(16.x)およびSQL Server 2019(15.x)におけるファイルクエリ | OPENROWSET(BULK ...) |
ローカル ディスク、ネットワーク、またはクラウド上のファイル (Azure BLOB、ADLS、S3、OneLake) | SAS トークン、アクセス キー、マネージド ID、Microsoft Entra ID | クラウド 1はイエス、ローカルはノー | SQL Server 2022(16.x)およびSQL Server 2019(15.x) |
| SQL Server 2025(17.x)以降のバージョンにおけるファイルクエリ | OPENROWSET(BULK ...) |
ローカル ディスク、ネットワーク、またはクラウド上のファイル (Azure BLOB、ADLS、S3、OneLake) | SAS トークン、アクセス キー、マネージド ID、Microsoft Entra ID | いいえ | SQL Server 2022 (16.x) 以降のバージョン、Azure SQL Database、Azure SQL Managed Instance、Fabric の SQL データベース |
| PolyBase コネクタ |
CREATE EXTERNAL TABLEとCREATE EXTERNAL DATA SOURCEを使用して、sqlserver://、oracle://、teradata://、mongodb://、odbc:// |
リモート SQL Server、Oracle、Teradata、MongoDB、ODBC ソース | SQL 認証のみ | はい | SQL Server 2019 (15.x) 以降のバージョン (Windows);SQL Server 2025 (17.x) 以降のバージョン (Linux) |
1 SQL Server 2022(16.x)でクラウドファイルにアクセスするには、PolyBase機能をインストールする必要があります。
- OLE DBクエリは、MSOLEDBSQL、SQLOLEDB、または他のプロバイダーを通じて、サポートされているすべてのSQL Serverバージョンで任意のOLE DBソースに接続するために
OPENROWSET(provider, connection, query)を使用します。 これらはSQL認証、Windows 認証、MSOLEDBSQLでMicrosoft Entra IDをサポートしており、PolyBaseサービスのインストールは不要です。 - ファイルクエリは、
OPENROWSET(BULK ...)を使ってローカルディスク、ネットワーク共有、またはAzure Blob Storage、ADLS、S3、OneLakeなどのクラウドストレージ上のファイルを、SASトークン、アクセスキー、マネージドアイデンティティ、またはMicrosoft Entra IDを使って読み込みます。 これらはSQL Server 2005以降のバージョンでローカルおよびネットワークファイル、SQL Server 2022(16.x)以降のクラウドファイル、Azure SQL Database、Azure SQL Managed Instance、FabricのSQL Databaseでサポートされています。 SQL Server 2022(16.x)以降のバージョンでは、ローカルファイルやクラウドファイルに対してファイルクエリはPolyBaseサービスを必要としません。 - PolyBaseコネクターは、
CREATE EXTERNAL DATA SOURCEとCREATE EXTERNAL TABLEを使用し、sqlserver://、oracle://、teradata://、mongodb://、またはodbc://場所を使って、リモートSQL Server、Oracle、Teradata、MongoDB、またはODBCソースに接続します。 これらはSQL Server 2019(15.x)以降のWindowsおよびLinuxのSQL Server 2025(17.x)以降のバージョンでSQL認証とPolyBaseサービスを必要とします。 詳細については、「 CREATE EXTERNAL DATA SOURCE (Transact-SQL)」を参照してください。
各アプローチを使用するタイミング
次の場合に OLE DB OPENROWSET を使用します。
- 永続オブジェクトを作成せずに、OLE DB
OPENROWSETを使い、一回限りのクイッククエリを行ってください。 - MSOLEDBsqlを使ったMicrosoft Entra IDまたはマネージドID認証にはOLE DB
OPENROWSETを使用してください。 - PolyBaseのサービス依存を避けるためにOLE DB
OPENROWSETを使いましょう。 - OLE DB
OPENROWSETを使って、OLE DBプロバイダーを持つ任意のデータソースに接続してください。
ファイル OPENROWSET(BULK) を使用して、次の場合に使用します。
- ファイル
OPENROWSET(BULK ...)はアドホックなファイル探索やスキーマ発見に使います。 - テーブル定義にコミットする前に、ファイル
OPENROWSET(BULK ...)を使って素早く変換やプレビューを行ってください。 - キャスト、フィルタリング、計算されたカラムなど、柔軟なインラインカラム変換にはファイル
OPENROWSET(BULK ...)を活用してください。 - 頻繁に変わらず永続的なメタデータを必要としないデータにはファイル
OPENROWSET(BULK ...)を使いましょう。
CREATE EXTERNAL TABLEで PolyBase コネクタを使用すると、次のことが行われます。
- PolyBaseコネクターを
CREATE EXTERNAL TABLEで使用し、複数のユーザーやアプリケーションがアクセスできる永続的かつ再利用可能なテーブル定義を保存しましょう。 - 統計やクエリプランの最適化が必要な本番ワークロードには、PolyBaseコネクターと
CREATE EXTERNAL TABLEを使いましょう。 - OracleやSQL Serverなどのリモートソースへのプッシュダウン計算には、
CREATE EXTERNAL TABLE付きのPolyBaseコネクタを使用してください。 - 共有ガバナンスとセキュリティのために、
CREATE EXTERNAL TABLEと共に PolyBase コネクタを使用します。テーブルの作成後、ユーザーに必要なのはSELECT権限のみです。 - リモートソースにSQL認証がある場合は、
CREATE EXTERNAL TABLEでPolyBaseコネクターを使用してください。
OPENROWSET (OLE DB) - アドホック リモート クエリ (PolyBase サービスは必要ありません)
OLE DB 形式の OPENROWSET は、OLE DB プロバイダーを介してリモート データ ソースに接続し、パススルー クエリを実行して、結果を行セットとして返します。 これは、リンク サーバーに代わる 1 回限りのアドホックな代替手段です。 永続的なメタデータは作成されません。 この構文では PolyBase サービスは必要ありません。また、クラウド ファイルや外部データ ソースもサポートされていません。
この例のクエリは、OLE DB (PolyBase ではなく) 経由でリモート SQL Server に接続します。
SELECT *
FROM OPENROWSET (
'MSOLEDBSQL',
'Server=remote-server;Database=AdventureWorks;Trusted_Connection=yes;',
'SELECT TOP 10 * FROM AdventureWorks.Sales.SalesOrderHeader'
);
OPENROWSET(BULK) - ファイル ベースのクエリ (PolyBase)
BULKのOPENROWSET形式は、ファイルから直接データを読み取ります。 SQL Server 2019 (15.x) 以前のバージョンでは、ローカルまたは UNC ファイル パスから読み取り、フォーマット ファイルが必要です。 SQL Server 2022 (16.x) 以降のバージョンでは、パラメーターとDATA_SOURCE パラメーターを使用してFORMATから読み取ることができます。 このアプローチは、データ仮想化に使用される PolyBase 統合バージョンです。
PolyBase とデータ仮想化のコンテキストでは、このガイドがOPENROWSETを参照する場合は、外部ファイルに対してクエリを実行するためのOPENROWSET(BULK ...)句を含むFORMAT構文を意味します。
例:
このクエリ例では、Azure Blob Storage (SQL Server 2022 以降のバージョン) から Parquet ファイルを読み取ります。
SELECT TOP 10 *
FROM OPENROWSET (
BULK 'data/sales/*.parquet',
DATA_SOURCE = 'MyAzureStorage',
FORMAT = 'PARQUET'
) AS [result];
このクエリ例では、インライン パス (Azure SQL Database、Azure SQL Managed Instance) を使用して Parquet ファイルを読み取ります。
SELECT TOP 10 *
FROM OPENROWSET (
BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet',
FORMAT = 'PARQUET'
) AS [result];
OPENROWSET と外部テーブルのどちらを使用するべきか
OPENROWSET(BULK ...)テーブルと外部テーブルの両方で、T-SQL を使用して外部データのクエリを実行できますが、さまざまなユース ケース向けに設計されています。 次の表は、シナリオに適したアプローチを決定するのに役立つ主な違いをまとめたものです。
| 能力 | OPENROWSET(BULK ...) |
外部テーブル |
|---|---|---|
| Purpose | アドホック探索と 1 回限りのクエリ | 永続的で再利用可能なテーブル定義 |
| データベースに格納されているメタデータ | No. クエリの実行後に何も保存されない | Yes. テーブル定義、データ ソース、およびファイル形式はデータベース オブジェクトとして格納されます |
| スキーマ定義 | ファイル (Parquet) から自動的に推論されるか、 WITH 句を使用してインラインで指定されます |
CREATE EXTERNAL TABLE ステートメントで明示的に定義されている |
| アクセス許可 |
ADMINISTER BULK OPERATIONS または ADMINISTER DATABASE BULK OPERATIONS が必要となります |
作成したら、テーブルに対する標準の SELECT アクセス許可で十分です |
| 計算列 | Yes.
SELECTリストに式と計算列を追加します。filename()やfilepath()などのメタデータ関数は、ここでしか使用できません。 |
No. 固定列リスト;ビューまたは外部テーブルを読み取るクエリで変換を実行する |
| 統計 | Azure SQL Managed Instance:sys.sp_create_openrowset_statisticsを使った手動の単一列統計。
OPENROWSET の手動統計を参照してください。 SQL Server 2022 (16.x) 以降、Azure SQL Database、Fabric の SQL データベース: 述語に対する統計の自動作成 手動 OPENROWSET統計はSQL Serverではサポートされていません。 |
すべてのプラットフォームでの完全な CREATE STATISTICS サポートに加えて、SQL Server 2022 (16.x) 以降のバージョンでの自動作成。
外部テーブルの手動統計の作成を参照してください。 |
| プッシュダウン | 制限付きサポート。 エンジンはフィルターをファイル スキャンにプッシュダウンする可能性がありますが、リモート RDBMS ソースへのプッシュダウンはありません | Yes. RDBMS コネクタのプッシュダウン計算をサポートします (SQL Server、Oracle、Teradata、MongoDB) |
| 最適な用途 | データ探索、スキーマ検出、プロトタイプ作成クエリ、1 回限りのデータ読み込み、柔軟な変換 | 運用ワークロード、繰り返しクエリ、ユーザー間の共有アクセス、ダッシュボード、レポート |
-
OPENROWSET(BULK ...)アドホックな探索や一度きりのクエリに最適ですが、外部テーブルは永続的で再利用可能なテーブル定義に適しています。 -
OPENROWSET(BULK ...)クエリ実行後にデータベースにメタデータを保存しませんが、外部テーブルはテーブルの定義、データソース、ファイル形式をデータベースオブジェクトとして保存します。 -
OPENROWSET(BULK ...)Parquetファイルからスキーマを自動的に導き出すか、WITH節でスキーマをラインに定義しますが、外部テーブルはCREATE EXTERNAL TABLE文でスキーマを明示的に定義します。 -
OPENROWSET(BULK ...)ADMINISTER BULK OPERATIONSまたはADMINISTER DATABASE BULK OPERATIONSが必要ですが、外部テーブルはテーブルが存在すると標準SELECT権限のみでユーザーがクエリ可能です。 -
OPENROWSET(BULK ...)クエリやfilename()やfilepath()などのメタデータ関数で計算された列をサポートしていますが、外部テーブルは固定された列リストを持ち、ビューや外部テーブルを読み込むクエリでの変換が必要です。 -
OPENROWSET(BULK ...)統計のサポートは限定的です。Azure SQL Managed Instancesys.sp_create_openrowset_statisticsは単一列統計に使用できますが、2022年(16.x)以降のバージョンSQL Server、Azure SQL Database、FabricのSQLデータベースでは述語に関する統計を自動的に作成できます。 FabricのSQL Server、Azure SQL Database、SQLデータベースでは手動OPENROWSET統計はサポートされていません。 外部テーブルはすべてのプラットフォームでフルのCREATE STATISTICS機能をサポートし、SQL Server 2022(16.x)以降のバージョンでは自動統計、Azure SQL Database、Fabric のSQLデータベースもサポートします。 OPENROWSET の手動統計および外部テーブルの手動統計の作成をご覧ください。 -
OPENROWSET(BULK ...)プッシュダウンは限定的で、リモートRDBMSソースへのプッシュダウンはできませんが、RDBMSコネクタのプッシュダウン計算は外部テーブルでサポートされています。 -
OPENROWSET(BULK ...)データ探索、スキーマ発見、プロトタイピング、ワンタイムロード、柔軟な変換に最適ですが、外部テーブルは本番作業、繰り返しクエリ、共有アクセス、ダッシュボード、レポートに最適です。
柔軟性が必要な場合は OPENROWSET を使用する
OPENROWSETを使用して、永続的なオブジェクトを作成せずに、ファイルの探索、さまざまなスキーマのテスト、計算列と変換の追加を行います。 たとえば、ファイル パスを列として抽出したり、データ型をインラインでキャストしたり、1 つのクエリで計算式をフィルター処理したりすることができます。
このクエリ例には、計算列と変換が含まれています。
SELECT result.filename() AS [FileName],
result.filepath(1) AS [Year],
result.filepath(2) AS [Month],
CAST (OrderDate AS DATE) AS OrderDate,
Amount,
OrderDate
FROM OPENROWSET (
BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*/*/*/*.parquet',
FORMAT = 'PARQUET'
) AS result
WHERE result.filepath(1) = '2025';
ヒント
filepath()およびfilename()関数は、Azure SQL Database、Azure SQL Managed Instance、および SQL Server 2022 (16.x) 以降のバージョンで使用できます。 ファイル パスの一部をフィルター処理し (パーティションの削除)、ソース ファイル名を列として公開することができます。外部テーブルでは直接はできません。
永続化とガバナンスが必要な場合に外部テーブルを使用する
複数のユーザーまたはアプリケーションが同じ外部データに対して繰り返しクエリを実行する必要がある場合は、外部テーブルを使用します。 スキーマ、データ ソース、および資格情報を 1 回定義し、データベースに格納します。 コンシューマーは、テーブル SELECT アクセス許可のみを必要とします。
外部テーブルでは 統計もサポートされています。統計は、クエリ オプティマイザーが、より優れた実行プランを構築するために使用します。 統計は手動で作成することも、エンジンで自動的に作成することもできます (SQL Server 2022 (16.x) 以降のバージョン)。
このクエリ例では、クエリ プランを改善するために、外部テーブルに統計を作成します。
CREATE STATISTICS Stats_OrderDate
ON dbo.SalesExternal(OrderDate)
WITH FULLSCAN;
両方の方法の統計の詳細については、「 PolyBase のパフォーマンスに関する考慮事項 - 統計」を参照してください。
BULK INSERT VS. OPENROWSET(BULK): どれを使用する必要がありますか?
BULK INSERTとOPENROWSET(BULK ...)の両方で、基になる同じ一括読み込みエンジンを使用して、ファイルから SQL Server にデータをインポートします。 ただし、構文、柔軟性、結果でできることは異なります。 次の表に主要な相違点を示します。
注
スタンドアロンのBULK INSERT文はFabricのSQLデータベースではサポートされていません。 データを取り込むには、OneLakeに対して INSERT ... SELECT with OPENROWSET(BULK ...) を使いましょう。
| 能力 | BULK INSERT |
OPENROWSET(BULK ...) |
|---|---|---|
| 基本的な目的 | ファイルからターゲット テーブルに直接データを読み込む |
またはSELECT ステートメントで使用するINSERT ... SELECTを返します。 |
| 使用パターン | スタンドアロン ステートメント: BULK INSERT <table> FROM '<file>' |
クエリ内で使用する必要があります: SELECT * FROM OPENROWSET(BULK ...) または INSERT INTO <table> SELECT * FROM OPENROWSET(BULK ...) |
| ターゲット テーブルが必要ですか? | Yes. 常にテーブルに直接書き込む | No. 任意の場所に挿入せずにそこから SELECT したり、任意のテーブルまたは一時テーブルに挿入したりできます。 |
| 読み込み中の列変換 | 制限付きサポート。 データはファイルからテーブルへ、そのままの状態で流れ込みます (マッピングはファイルのフォーマットや列の順序によって制御されます)。 | 完全なサポート。 式、CAST、WHERE フィルター、JOIN その他のテーブル、および計算列を周囲の環境に追加できます SELECT |
| 表のヒント |
WITH句には、BATCHSIZE、CHECK_CONSTRAINTS、FIRE_TRIGGERS、KEEPIDENTITY、KEEPNULLS、TABLOCKなどのサポートが含まれています |
INSERT ... SELECT * FROM OPENROWSET(BULK ...) WITH (TABLOCK, IGNORE_CONSTRAINTS, ...)構文を使用してテーブル ヒントをサポートします |
| ラージ オブジェクト (LOB) の単一値インポート | サポートしていません | Yes. ファイル全体を 1 つの SINGLE_BLOB、または SINGLE_CLOB 値としてインポートするSINGLE_NCLOB、、をサポートします |
| ファイルの書式設定 | Yes. (XML および XML 以外) を介してサポートされます | Yes. サポート対象 (XML および XML 以外) |
| クラウドファイルアクセス |
DATA_SOURCESQL Server 2017(14.x)以降のバージョン、Azure SQL Database、Azure SQL Managed InstanceでAzure Blob Storageをサポートしています。 SQL Server 2019 CU11以降のアップデートもADLS Gen2をサポートしています。 S3互換ストレージはサポートされていません。 |
DATA_SOURCESQL Server 2017(14.x)以降のバージョンでAzure Blob Storageをサポートし、SQL Server 2019 CU11以降のバージョンでADLS Gen2を、SQL Server 2022(16.x)以降のバージョンでS3互換ストレージをサポートします。 Azure SQL Database と Azure SQL Managed Instance は Azure Blob Storage と ADLS Gen2 をサポートします。 FabricのSQLデータベースはOneLakeおよびOneLakeショートカットを通じて外部ストレージをサポートしています。 |
| Parquet または Delta ファイル | サポートされていません。 CSV/区切りテキストのみ | Yes. 2022 SQL Server(16.x)以降のバージョンでは、Azure SQL Managed Instance、Azure SQL DatabaseFORMAT = 'PARQUET'とFORMAT = 'DELTA'をサポートしています。FabricではSQLデータベースはFORMAT = 'PARQUET'をサポートしていますが、DELTAはサポートしていません。 詳細については、 OPENROWSET BULK (Transact-SQL) を参照してください。 |
| 必要なアクセス許可 |
ADMINISTER BULK OPERATIONS または ADMINISTER DATABASE BULK OPERATIONS、およびターゲット テーブルの INSERT |
ADMINISTER BULK OPERATIONS または ADMINISTER DATABASE BULK OPERATIONS |
| 最小ログ記録 | Yes.
TABLOCK によるシンプルまたはバルク ログ方式の復旧モデルでサポートされています |
Yes.
INSERT ... SELECTとTABLOCKを一緒に使用する場合にサポートされます |
-
BULK INSERTファイルから直接ターゲットテーブルにデータを読み込み、OPENROWSET(BULK ...)はSELECT文や文INSERT ... SELECTで使える行セットを返します。 -
BULK INSERTは独立した文であり、OPENROWSET(BULK ...)はSELECT * FROM OPENROWSET(BULK ...)やINSERT INTO <table> SELECT * FROM OPENROWSET(BULK ...)のようなクエリ内で使用されなければなりません。 -
BULK INSERTは常に対象テーブルに直接書き込みますが、OPENROWSET(BULK ...)は、どこにも挿入せずにファイルからSELECTすることも、任意のテーブルまたは一時テーブルに挿入することもできます。 -
BULK INSERTデータがファイルからテーブル as-isへ流れ、マッピングはフォーマットファイルまたは列順序によって制御されるため、カラム変換のサポートは限定的です。OPENROWSET(BULK ...)式、CAST、WHEREフィルター、JOIN、そして周囲のSELECTの計算された列をサポートしています。 -
BULK INSERTでは、CHECK_CONSTRAINTS、FIRE_TRIGGERS、KEEPIDENTITY、KEEPNULLS、TABLOCK、WITH、およびその他のヒントにBATCHSIZE句を使用します。OPENROWSET(BULK ...)はINSERT ... SELECT * FROM OPENROWSET(BULK ...) WITH (TABLOCK, IGNORE_CONSTRAINTS, ...)を使用してテーブル ヒントをサポートします。 -
BULK INSERT大きなオブジェクトの単一値インポートをサポートしていません。OPENROWSET(BULK ...)SINGLE_BLOB、SINGLE_CLOB、SINGLE_NCLOBをサポートし、それぞれ1つのvarbinary(max)、varchar(max)、またはnvarchar(max)の値としてファイル全体をインポートできます。 -
BULK INSERTとOPENROWSET(BULK ...)の両方でXMLおよび非XML形式のファイルをサポートしています。 -
BULK INSERTでのクラウドファイルアクセスについては、DATA_SOURCEパラメータがSQL Server 2017(14.x)以降のバージョン、Azure SQL Database、Azure SQL Managed InstanceでAzure Blob Storageをサポートしています。 2019 SQL Server CU11以降のアップデートはADLS Gen2もサポートしていますが、BULK INSERTS3互換ストレージには対応していません。OPENROWSET(BULK ...)については、DATA_SOURCEは SQL Server 2017 (14.x) 以降で Azure Blob Storage、SQL Server 2019 CU11 以降で ADLS Gen2、SQL Server 2022 (16.x) 以降で S3 互換ストレージをサポートしています。 Azure SQL Database と Azure SQL Managed Instance は Azure Blob Storage と ADLS Gen2 をサポートします。 FabricのSQLデータベースはOneLakeおよびOneLakeショートカットを通じて外部ストレージをサポートしています。 -
BULK INSERTParquetやDeltaファイルをサポートしず、CSVまたは区切られたテキストのみに対応しています。OPENROWSET(BULK ...)SQL Server 2022(16.x)以降のバージョン、Azure SQL Database、Azure SQL Managed InstanceでFORMAT = 'PARQUET'およびFORMAT = 'DELTA'をサポートしています。 FabricのSQLデータベースはFORMAT = 'PARQUET'をサポートしていますが、FORMAT = 'DELTA'はサポートしていません。 詳細については、 OPENROWSET BULK (Transact-SQL) を参照してください。 -
BULK INSERTターゲットテーブルにはADMINISTER BULK OPERATIONSまたはADMINISTER DATABASE BULK OPERATIONSとINSERTの許可が必要ですが、OPENROWSET(BULK ...)はADMINISTER BULK OPERATIONSまたはADMINISTER DATABASE BULK OPERATIONSが必要です。 -
BULK INSERTは、シンプル復旧モデルまたは一括ログ復旧モデルでは、TABLOCKを使用した最小限のログ記録をサポートします。OPENROWSET(BULK ...)INSERT ... SELECTやTABLOCKと併用した場合、ログ記録を最小限に抑えることができます。
選択するタイミング BULK INSERT
BULK INSERTは、ファイルからテーブルへの読み込みが簡単で、インポート中にデータを変換、フィルター処理、結合する必要がない場合に使用します。 CSV またはその他の区切りファイルには、より単純な構文が使用されます。
このクエリ例では、Azure Blob Storage からテーブルに直接 CSV ファイルを読み込みます。
BULK INSERT Sales.Invoices
FROM 'invoices/inv-2025-01.csv'
WITH (
DATA_SOURCE = 'MyAzureBlobStorage',
FORMAT = 'CSV',
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);
このクエリ例では、列マッピング用のフォーマット ファイルを含むローカル ファイルを読み込みます。
BULK INSERT dbo.Products
FROM 'C:\Data\products.csv'
WITH (
FORMATFILE = 'C:\Data\products.fmt',
FIRSTROW = 2,
TABLOCK
);
OPENROWSET(BULK) を選択するタイミング
次の条件のうち 1 つ以上が必要な場合は、 OPENROWSET(BULK ...) を使用します。
- テーブルを作らずにファイルデータのクエリやプレビューに使う
OPENROWSET(BULK ...)。 - インポート時に
OPENROWSET(BULK ...)を使ってデータを変換、フィルタリング、または結合してください。 - ParquetやDeltaファイルは
OPENROWSET(BULK ...)で読み込みましょう。これらのフォーマットはBULK INSERTサポートしていません。 -
OPENROWSET(BULK ...)を使って、SINGLE_BLOB、SINGLE_CLOB、またはSINGLE_NCLOBの1つのLOB値としてファイル全体をインポートできます。
このクエリ例では、データをどこにも挿入せずに、Azure Blob Storage の CSV ファイルをプレビューします。
SELECT TOP 10 *
FROM OPENROWSET (
BULK 'invoices/inv-2025-01.csv',
DATA_SOURCE = 'MyAzureBlobStorage',
FORMAT = 'CSV',
FIRSTROW = 2,
FIELDTERMINATOR = ','
) AS src;
このクエリ例では、変換とフィルター処理を使用してデータを挿入します。
INSERT INTO Sales.Invoices (InvoiceDate, Amount, Customer)
SELECT CAST (InvoiceDate AS DATE),
Amount * 1.1, -- Apply a 10% markup
UPPER(Customer)
FROM OPENROWSET (
BULK 'invoices/inv-2025-01.csv',
DATA_SOURCE = 'MyAzureBlobStorage',
FORMAT = 'CSV',
FIRSTROW = 2
) WITH (
InvoiceDate VARCHAR (10),
Amount DECIMAL (18, 2),
Customer VARCHAR (100)
) AS src
WHERE Amount IS NOT NULL;
このクエリ例では、Parquet ファイルを読み込みます ( BULK INSERTではできません)。
INSERT INTO Sales.Invoices
SELECT *
FROM OPENROWSET (
BULK 'data/invoices/*.parquet',
DATA_SOURCE = 'MyAzureStorage',
FORMAT = 'PARQUET') AS src;
このクエリ例では、XML ファイル全体を 1 つの varbinary(max) 値としてインポートします。
INSERT INTO dbo.XmlDocuments (DocContent)
SELECT BulkColumn
FROM OPENROWSET (
BULK 'C:\Data\catalog.xml',
SINGLE_BLOB
) AS x;
ヒント
1 つの方法は、OPENROWSET(BULK ...)内のSELECTから始めてファイル データを探索して検証し、変換が必要ない場合は最終的な運用負荷のBULK INSERTに切り替える方法です。 Parquet または Delta のサポートまたはインライン フィルター処理が必要な場合は、 OPENROWSETを使用してください。
詳細については、次の関連ガイドを参照してください。
- Use BULK INSERT または OPENROWSET(BULK...) を使用して SQL Server にデータをインポートする 記事では、セキュリティに関する考慮事項を含む、手順を並べて比較できる詳細なガイドを提供しています。
- 「データの一括インポートおよびエクスポート(SQL Server)」記事では、bcp、
BULK INSERT、OPENROWSETを含むすべてのバルクデータ移動方法の概要が紹介されています。 -
BULK INSERT(Transact-SQL)の記事には、
BULK INSERTのT-SQLリファレンスが完全に提供されています。 -
OPENROWSET BULK (Transact-SQL) 記事には
OPENROWSET(BULK ...)の完全なT-SQLリファレンスが掲載されています。 - 「Azure Blob Storageにおけるデータの一括アクセスの例」記事では、Azure Storageで両方の方法を使った例を並べて紹介しています。
-
「OPENROWSET Bulk Rowset Provider (SQL Server)で大規模オブジェクトデータをインポートする記事では、
SINGLE_BLOB、SINGLE_CLOB、SINGLE_NCLOB例が提供されています。 - 「Use a format file to bulk import data(SQL Server)」という記事では、両方の方法によるフォーマットファイルの使い方について説明しています。
- ブルクインポート時のnull保持やデフォルト値の適用に関するガイダンスについては、「バルクインポート時にnullまたはデフォルト値を保持する(SQL Server)」を参照してください。
- バルクインポート時の識別値の保存に関するガイダンスについては、「データ一括インポート時の識別値保持(SQL Server)」を参照してください。
便利なメタデータ関数
OPENROWSETテーブルや外部テーブルを使って外部ファイルをクエリする際は、組み込みの関数や手続きを使ってファイルのメタデータを検査し、スキーマを発見し、パーティション認識クエリを実装してください。
filepath() と filename()
filepath()関数とfilename()関数は、結果セット内の各行のファイル パスまたはファイル名の一部を返します。 これらは特に次の場合に役立ちます。
パーティションの削除: フォルダー セグメント (年/月/日のパーティションなど) をフィルター処理して、エンジンがすべてをスキャンするのではなく、一致するファイルのみを読み取るようにします。
ソース メタデータの公開: クエリ結果に元のファイル名またはパスを列として含めます。これは、監査やデバッグに役立ちます。
| Function | 返品 | 例 |
|---|---|---|
filename() |
各行のソース ファイルのファイル名 (拡張子を含む) | sales_2025_01.parquet |
filepath(N) |
パスのワイルドカード (*) の BULK番目のフォルダー セグメント。N は 1 から始まります |
パス sales/2025/01/*.parquetの場合、 filepath(1) は 2025を返し、 filepath(2) は戻ります 01 |
適用対象: Azure SQL Database、Azure SQL Managed Instance、SQL Server 2022 (16.x) 以降のバージョン、Fabric の SQL データベース。
このクエリ例では、パーティションの削除に filepath() を使用し、ソース ファイルを識別するための filename() を使用します。
/2025/ フォルダーの下にあるファイルのみを読み取り、/06/サブフォルダーの下にあるファイルのみを読み取ります。
SELECT result.filename() AS SourceFile,
result.filepath(1) AS [Year],
result.filepath(2) AS [Month],
*
FROM OPENROWSET (
BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*/*/*.parquet',
FORMAT = 'PARQUET'
) AS result
WHERE result.filepath(1) = '2025'
AND result.filepath(2) = '06';
ヒント
サブクエリや CTE ではなく、filepath()句にWHERE フィルターを配置します。 フィルターが WHERE 句にある場合、エンジンはファイル スキャン レベルでパーティションの削除を実行できるため、I/O が大幅に削減されます。
sp_describe_first_result_set - OPENROWSET の列型を確認します
Parquet ファイルで OPENROWSET を使用すると、エンジンは列データ型を自動的に推論します (スキーマ推論)。 推論される型は、必要以上に大きくなる可能性があります。 たとえば、Parquet メタデータには最大長が含まれていないため、多くの場合、文字列は varchar(8000) として推論されます。 この選択により、パフォーマンスが低下し、より多くのメモリが消費される可能性があります。
クエリを終了するsp_describe_first_result_setに、を使用して推論されたスキーマを検査します。 推論された型が表示されたら、 WITH 句でより狭い型を指定してパフォーマンスを向上させます。
手順 1: 推論されたスキーマを調べます。
EXECUTE sp_describe_first_result_set N' SELECT * FROM OPENROWSET( BULK ''abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet'', FORMAT = ''PARQUET'' ) AS result';出力には、各列の名前、推論されたデータ型、最大長、有効桁数、および小数点以下桁数が表示されます。 varchar(8000) となっていて、varchar(100) で十分な場合は、それに置き換えてください。
手順 2: パフォーマンスを向上させるには、明示的な型を使用します。
SELECT TOP 100 * FROM OPENROWSET ( BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet', FORMAT = 'PARQUET' ) WITH ( OrderId INT, OrderDate DATE, Amount DECIMAL (18, 2), Customer VARCHAR (100) -- much narrower than the inferred varchar(8000) ) AS result;
スキーマ推論は Parquet ファイルでのみ機能します。 CSV ファイルの場合は、常に WITH 句 ( OPENROWSETの場合) または CREATE EXTERNAL TABLE ステートメントで列定義を指定します。
sp_describe_first_result_setはFabric手続きにおける一般的なSQL Server、Azure SQL Database、Azure SQL Managed Instance、SQLデータベースですが、特にOPENROWSETクエリに特に役立ちます。 詳細については、 sp_describe_first_result_setをご覧ください。
パフォーマンス、トラブルシューティング、ベスト プラクティス
データ仮想化を実装したら、次のガイドを使用してパフォーマンスを最適化し、問題を診断し、運用環境の準備を確認します。
| 面積 | [アーティクル] | 詳細情報 |
|---|---|---|
| PolyBase のパフォーマンス | SQL Server 用 PolyBase のパフォーマンスに関する考慮事項 | 統計、プッシュダウン、並列処理、およびメモリ管理 |
| プッシュダウン計算 | PolyBase でのプッシュダウン計算 | リモート ソースにプッシュする操作を指定します |
| プッシュダウンが発生したかどうかを確認する方法 | 外部プッシュダウンが発生した場合の確認方法 | クエリ プランと DMV |
| Troubleshooting | PolyBase の監視とトラブルシューティング | よくあるエラーと解決方法 |
| Kerberos 接続 | PolyBase Kerberos の接続性のトラブルシューティング | |
| よくある質問 | PolyBase に関してよく寄せられる質問 | |
| エラーと解決策 | PolyBase エラーと考えられる解決策 |