SQL Server 上の外部データにアクセスするための PolyBase の構成

適用対象:SQL Server

この記事では、SQL Server インスタンス上で PolyBase を使用して、別の SQL Server インスタンス上の外部データに対してクエリを実行する方法について説明します。

前提条件

PolyBase をインストールしていない場合は、「PolyBase のインストール」をご覧ください。 インストールに関する記事では、前提条件について説明します。 また、インストールが完了したら、PolyBase を有効にするようにしてください。

SQL Server の外部データ ソースによって、SQL 認証が使用されます。

データベース スコープ資格情報より前に、マスター キーを作成しておく必要があります。

SQL Server の外部データ ソースを構成する

SQL Server データ ソースのデータに対してクエリを実行するには、外部テーブルを作成して外部データを参照する必要があります。 このセクションでは、これらの外部テーブルを作成するサンプル コードを示します。

最適なクエリのパフォーマンスを得るために、外部テーブルの列、特に結合、フィルター、集計に使用される列に対して統計を作成します。

このセクションでは以下の Transact-SQL コマンドが使用されます。

  1. SQL Server ソースにアクセスするために、データベース スコープ資格情報を作成します。 次の例では、IDENTITY = 'username' および SECRET = 'password' を使用して、外部データ ソースに対する資格情報を作成します。

    CREATE DATABASE SCOPED CREDENTIAL SqlServerCredentials
    WITH IDENTITY = 'username', SECRET = 'password';
    

    重要

    PolyBase 用の SQL ODBC コネクタでサポートされるのは、Kerberos 認証ではなく、基本認証のみです。

  2. CREATE EXTERNAL DATA SOURCE を使用して外部データ ソースを作成します。 次のような例です。

    • SQLServerInstance という名前の外部データ ソースを作成します。
    • 外部のデータ ソースを識別します (LOCATION = '<vendor>://<server>[:<port>]')。 この例では、SQL Server の既定のインスタンスを指しています。
    • 計算をソースにプッシュする必要があるかどうかを識別します (PUSHDOWN)。 PUSHDOWN は既定では ON です。

    最後に、この例では、前に作成した資格情報を使用します。

    CREATE EXTERNAL DATA SOURCE SQLServerInstance
        WITH ( LOCATION = 'sqlserver://SqlServer',
        PUSHDOWN = ON,
        CREDENTIAL = SQLServerCredentials);
    
  3. CREATE EXTERNAL TABLE で外部テーブルを作成する このステートメントには照合順序が必要であり、この場所には 3 部構成の表記 (<database>.<schema>.<table>) が必要です。

    CREATE EXTERNAL TABLE DatabasesExternal (
        name VARCHAR(128) COLLATE SQL_Latin1_General_CP1_CI_AS)
      WITH (LOCATION = 'master.sys.databases',
      DATA_SOURCE = SQLServerInstance);
    
  4. 必要に応じて、外部テーブルの統計を作成します。

最適なクエリのパフォーマンスを得るために、外部テーブルの列、特に結合、フィルター、集計に使用される列に対して統計を作成します。

  CREATE STATISTICS statistics_name ON customer (C_CUSTKEY)
  WITH FULLSCAN;

重要

外部データ ソースを作成すると、CREATE EXTERNAL TABLE コマンドを使用して、そのソース上でクエリ可能なテーブルを作成することができます。

SQL Server コネクタの互換性のある型

SQL Server (sqlserver://) コネクタを使用して Azure SQL データベースにアクセスすることもできます。 このタスクを実行するには、前に示したのと同じ手順に従います。 データベース スコープ資格情報、サーバー アドレス、ポート、場所の文字列が接続先の Azure SQL データベース データ ソースのものと関連付けられていることを確認してください。

次のステップ

さまざまなデータ ソースへの外部データ ソースと外部テーブルの作成に関するその他のチュートリアルについては、「PolyBase Transact-SQL リファレンス」を参照してください。

PolyBase の詳細については、SQL Server PolyBase の概要に関する記事をご覧ください。