次の方法で共有


ODBC ジェネリック型の外部データにアクセスするための PolyBase の構成

適用対象:SQL Server

SQL Server 2019 以降の PolyBase では、ODBC コネクタを使用して ODBC と互換性のあるデータ ソースに接続できます。 SQL Server 2025 (17.x) プレビュー以降、この機能は Linux で使用できます。

この記事では、ODBC データ ソースを使用して接続構成を作成する方法について説明します。 提供されるガイダンスでは、例として 1 つの特定の ODBC ドライバーを使用します。 特定の例については、ODBC プロバイダーにお問い合わせください。 適切な接続文字列のオプションを決定するには、データ ソースの ODBC ドライバーに関するドキュメントを参照してください。 この記事の例は、特定の ODBC ドライバーには適用されない場合があります。

前提条件

SQL Server 2022 (16.x) 以前のバージョンでは、この機能には Windows 上の SQL Server が必要です。

  • PolyBase をインストールし、SQL Server インスタンス用に有効にする必要があります (PolyBase のインストール)。

  • データベース スコープ資格情報を作成する前に、 マスター キーを作成する必要があります。

ODBC ドライバーをインストールする

使用しているオペレーティング システムのインストール手順に従ってください。

SQL Server 2025 (17.x) プレビューでは、PolyBase sqlserver データ ソースの場合、既定で Microsoft ODBC Driver version 18 for SQL Server が使用されます。 このドライバーは TDS 8.0 をサポートしており、さまざまな更新プログラム、機能、いくつかの破壊的変更が含まれています。 TDS 8.0 を使用するには、新しい暗号化オプションを使用し、信頼された証明書をサーバーにインストールする必要があります。

MICROSOFT ODBC Driver version 18 for SQL Server の詳細については、以下を参照してください。

SQL Server TDS 8.0 のサポートの詳細については、 TDS 8.0 を参照してください。

各 PolyBase ノードで、接続するデータ ソースの ODBC ドライバーをダウンロードしてインストールします。 ドライバーが適切にインストールされたら、[ODBC データ ソースの管理者] からドライバーを表示してテストできます。

PolyBase スケールアウト グループのスクリーンショット。

前の例では、ドライバーの名前は赤で囲まれています。 外部データ ソースを作成するときに、この名前を使用します。

重要

クエリのパフォーマンスを向上させるために、接続プールを有効にします。 この操作は、[ODBC データ ソースの管理者] から実行できます。

SQL Server に依存オブジェクトを作成する

ODBC データ ソースを使用するには、最初にいくつかのオブジェクトを作成して構成を完了する必要があります。

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

  1. ODBC ソースにアクセスするために、データベース スコープ資格情報を作成します。

    CREATE DATABASE SCOPED CREDENTIAL [<credential_name>]
        WITH IDENTITY = '<username>', SECRET = '<password>';
    

    たとえば、次の例では、credential_nameの ID を使用して、usernameという名前の資格情報を作成します。 <password> は複雑なパスワードに置き換えます。

    CREATE DATABASE SCOPED CREDENTIAL credential_name
        WITH IDENTITY = 'username', SECRET = '<password>';
    
  2. CREATE EXTERNAL DATA SOURCE を使用して外部データ ソースを作成します。

    CREATE EXTERNAL DATA SOURCE [<external_data_source_name>]
    WITH (
        LOCATION = 'odbc://<ODBC server address>[:<port>]',
        CONNECTION_OPTIONS = 'Driver={<Name of installed driver>};
            ServerNode = <name of server  address>:<Port>',
        -- PUSHDOWN = [ON] | OFF,
        CREDENTIAL = [<credential_name>]
    );
    

    次の例では、以下の条件で外部データ ソースを作成します。

    • 名前 external_data_source_name
    • ODBC SERVERNAME およびポート 4444に配置する
    • CData ODBC Driver For SAP 2015 に接続する - これは、「ODBC ドライバーをインストールする」で作成したドライバーです。
    • ServerNode sap_server_node のポート 5555
    • サーバーへのプッシュ ダウンを処理できるように構成する (PUSHDOWN = ON)
    • 資格情報 credential_name を使用する
    CREATE EXTERNAL DATA SOURCE external_data_source_name
    WITH (
        LOCATION = 'odbc://SERVERNAME:4444',
        PUSHDOWN = ON,
        CONNECTION_OPTIONS = 'Driver={CData ODBC Driver For SAP 2015};
            ServerNode = sap_server_node:5555',
        CREDENTIAL = credential_name
    );
    

外部テーブルを作成する

依存オブジェクトを作成したら、T-SQL を使用して外部テーブルを作成できます。

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

  1. 1 つ以上の外部テーブルを作成します。

    外部テーブルを作成します。 DATA_SOURCE引数を使用して前に作成した外部データ ソースを参照し、ソース テーブルをLOCATIONとして指定する必要があります。 すべての列を参照する必要はありませんが、型が正しくマップされていることを確認する必要があります。

    CREATE EXTERNAL TABLE [<your_table_name>]
    (
        [<col1_name>] DECIMAL (38) NOT NULL,
        [<col2_name>] DECIMAL (38) NOT NULL,
        [<col3_name>] CHAR COLLATE Latin1_General_BIN NOT NULL
    )
    WITH (
        DATA_SOURCE = [<external_data_source_name>],
        LOCATION = '<sap_table_name>'
    );
    

    この外部データ ソースを使用して、すべての外部テーブルの依存オブジェクトを再利用できることに注意してください。

  2. 省略可能: 外部テーブルの統計を作成します。

    クエリのパフォーマンスを最適化するには、外部テーブルの列、特に結合、フィルター、集計に使用される列に統計を作成することをお勧めします。

    CREATE STATISTICS statistics_name ON contact(FirstName) WITH FULLSCAN;