次の方法で共有


IBM Db2 データベース

概要

項目 説明
リリース状態 一般提供
プロダクツ エクセル
Power BI (セマンティック モデル)
Power BI (データフロー)
Fabric (データフロー Gen2)
Power Apps (データフロー)
Dynamics 365 Customer Insights
サポートされている認証の種類 基本
データベース
ウィンドウズ
関数リファレンス ドキュメント DB2.Database

手記

一部の機能は 1 つの製品に存在する可能性がありますが、展開スケジュールとホスト固有の機能のため、他の製品には存在しない場合があります。

前提 条件

既定では、IBM Db2 データベース コネクタは Microsoft ドライバーを使用してデータに接続します。 Power Query Desktop の詳細オプションで IBM ドライバーを使用する場合は、まず、データへの接続に使用するコンピューターに IBM Db2 driver for .NET をインストールする必要があります。 このドライバーの名前は随時変更されるため、.NET で動作する IBM Db2 ドライバーを必ずインストールしてください。 .NET 用 IBM Db2 ドライバーをダウンロード、インストール、および構成する方法については、「初期バージョン 11.5 クライアントとドライバーのダウンロード」を参照してください。 詳細情報: ドライバーの制限IBM Db2 ドライバーがインストールされていることを確認

サポートされている機能

  • 輸入
  • DirectQuery (Power BI セマンティック モデル)
  • 詳細オプション
    • ドライバー (IBM または Microsoft)
    • コマンドのタイムアウト (分)
    • パッケージ コレクション
    • SQL ステートメント
    • リレーションシップ列を含める
    • 完全階層を使用して移動する

Power Query Desktop から IBM Db2 データベースに接続する

接続を確立するには、次の手順を実行します。

  1. [データの取得] から [IBM Db2 データベース] オプションを選択します。

  2. Serverで接続先の IBM Db2 サーバーを指定します。 ポートが必要な場合は、ServerName:Port形式を使用して指定します。ここで、ポート ポート番号を指定します。 また、アクセスする IBM Db2 データベースを Databaseに入力します。 この例では、サーバー名とポートが TestIBMDb2server.contoso.com:4000 され、アクセスされる IBM Db2 データベースが NORTHWD2

    IBM Db2 データベース接続を入力します。

  3. Power BI Desktop から接続する場合は、インポート または DirectQuery データ接続モードを選択します。 以降の手順の例では、データのインポート接続モードを使用します。 DirectQuery の詳細については、「Power BI DesktopDirectQuery を使用する」を参照してください。

    手記

    既定では、IBM Db2 データベース ダイアログ ボックスではサインイン時に Microsoft ドライバーが使用されます。 IBM ドライバーを使用する場合は、詳細オプション 開き、IBM選択します。 詳細情報: 詳細オプションを使用して接続する

    データ接続モードとして DirectQuery 選択した場合、詳細オプションで SQL ステートメントは無効になります。 DirectQuery では現在、IBM Db2 コネクタのネイティブ データベース クエリに対するクエリ プッシュダウンはサポートされていません。

  4. [OK]を選択します。

  5. この IBM Db2 データベースに初めて接続する場合は、使用する認証の種類を選択し、資格情報を入力して、接続 選択します。 認証の詳細については、「データ ソースを使用した 認証」を参照してください。

    IBM Db2 データベース資格情報を入力します。

    既定では、Power Query は暗号化された接続を使用して IBM Db2 データベースへの接続を試みます。 暗号化された接続を使用して Power Query が接続できない場合は、[接続できません] ダイアログ ボックスが表示されます。 暗号化されていない接続を使用して接続するには、[OK]選択します。

    [接続できない] ダイアログ ボックス

  6. [ナビゲーター] で、必要とするデータを選択してから、[読み込み] を選択してデータを読み込むか、[データの変換] を選択してデータを変換します。

    データベース から必要なデータを選択します

Power Query Online から IBM Db2 データベースに接続する

接続を確立するには、次の手順を実行します。

  1. IBM Db2 データベース オプションを、Power Query - データソースに接続 ページで選択します。

  2. Serverで接続先の IBM Db2 サーバーを指定します。 ポートが必要な場合は、ServerName:Port形式を使用して指定します。ここで、ポート ポート番号を指定します。 また、アクセスする IBM Db2 データベースを Databaseに入力します。 この例では、サーバー名とポートが TestIBMDb2server.contoso.com:4000 され、アクセスされる IBM Db2 データベースが NORTHWD2

  3. オンプレミス データ ゲートウェイの名前を選択します。

    手記

    IBM Db2 データベースがローカル・ネットワーク上にあるかオンラインであるかに関係なく、このコネクター用のオンプレミス・データ・ゲートウェイを選択する必要があります。

  4. この IBM Db2 データベースに初めて接続する場合は、「認証の種類」で接続の資格情報の種類を選択します。 Windows 認証 代わりに IBM Db2 データベースに作成されたアカウントを使用する場合は、Basic を選択します。

  5. 資格情報を入力します。

  6. 暗号化された接続 使用する場合は [暗号化された接続 を使用する] を選択するか、暗号化されていない接続を使用する場合はオプションをオフにします。

    IBM Db2 データベースオンライン接続を入力します。

  7. [次 を選択して続行します。

  8. ナビゲーターで必要なデータを選択し、次に [データの変換] を選択して、Power Query エディターでデータを変換します。

    ナビゲーター で変換するデータを選択します

詳細オプションを使用して接続する

Power Query には、必要に応じてクエリに追加できる一連の高度なオプションが用意されています。

IBM Db2 データベース接続ダイアログ・ボックスに含まれる詳細オプション。

次の表に、Power Query で設定できるすべての詳細オプションを示します。

高度なオプション 説明
運転手 IBM Db2 データベースへの接続に使用するドライバーを決定します。 選択肢は IBM と Windows (既定) です。 IBM ドライバーを選択する場合は、まず、IBM Db2 driver for .NET がマシンにインストールされていることを確認する必要があります。 このオプションは、Power Query Desktop でのみ使用できます。 詳細情報: IBM Db2 ドライバーがインストールされていることを確認
コマンドのタイムアウト (分) 接続の継続時間が 10 分 (既定のタイムアウト) を超える場合は、別の値を分単位で入力して、接続を長く開いたままにすることができます。
パッケージ コレクション パッケージを検索する場所を指定します。 パッケージは、SQL ステートメントの処理時に Db2 によって使用される制御構造であり、必要に応じて自動的に作成されます。 既定では、このオプションでは NULLID値が使用されます。 Microsoft ドライバーを使用している場合にのみ使用できます。 詳細情報: DB2 パッケージ: 概念、例、および一般的な問題
SQL ステートメント 詳細については、「ネイティブ データベース クエリを使用してデータベースからデータをインポートする」を参照してください。
リレーションシップ列を含める オンの場合は、他のテーブルとのリレーションシップを持つ可能性のある列が含まれます。 このボックスがオフの場合、これらの列は表示されません。
完全階層を使用して移動する オンにすると、ナビゲーターには、接続先のデータベース内のテーブルの完全な階層が表示されます。 オフにすると、列と行にデータが含まれるテーブルのみがナビゲーターに表示されます。

必要な詳細オプションを選択したら、Power Query Desktop では [OK] を選択するか、Power Query Online では [次へ] を選択して IBM Db2 データベースに接続します。

問題と制限事項

ドライバーの制限事項

Microsoft ドライバーは、"ADO.NET Provider for DB2" と呼ばれる Microsoft Host Integration Server で使用されるドライバーと同じです。 IBM ドライバーは、.NET で動作する IBM Db/2 ドライバーです。 このドライバーの名前は随時変更されるため、OLE/DB、ODBC、または JDBC で動作する IBM Db2 ドライバーとは異なる .NET で動作することを確認してください。

Power Query Desktop を使用している場合は、Microsoft ドライバー (既定) または IBM ドライバーのいずれかを使用できます。 現在、Power Query Online では Microsoft ドライバーのみが使用されています。 各ドライバーには制限があります。

  • Microsoft ドライバー
    • トランスポート層セキュリティ (TLS) は、Power BI Desktop の 2024 年 12 月リリース以降でのみサポートされます
  • IBM ドライバー
    • IBM Db2 データベース コネクタは、IBM Db2 driver for .NET を使用する場合、メインフレームまたは IBM i システムでは機能しません
    • DirectQuery はサポートされていません

Microsoft は Microsoft ドライバーのサポートを提供しますが、IBM ドライバーはサポートしていません。 ただし、IT 部門が既にマシンに設定および構成している場合は、IT 部門が IBM ドライバーのトラブルシューティング方法を知っている必要があります。

DirectQuery ではネイティブ クエリがサポートされていません

Power Query Desktop でデータ接続モードとして DirectQuery を選択すると、詳細オプションの SQL ステートメント テキスト ボックスが無効になります。 Power Query IBM Db2 コネクタは現在、ネイティブ データベース クエリの上にクエリ プッシュダウンをサポートしていないため、無効になっています。

トラブルシューティング

IBM Db2 ドライバーがインストールされていることを確認する

Power Query Desktop 用の IBM Db2 ドライバーを使用する場合は、まず、コンピューターにドライバーをダウンロード、インストール、および構成する必要があります。 IBM Db2 ドライバーがインストールされていることを確認するには、

  1. コンピューターで Windows PowerShell を開きます。

  2. 次のコマンドを入力します。

    [System.Data.Common.DbProviderFactories]::GetFactoryClasses() | ogv

  3. 表示されたダイアログ ボックスで、InvariantName 列に次の名前が表示されます。

    IBM.Data.DB2

この名前が InvariantName 列にある場合、IBM Db2 ドライバーが正しくインストールされ、構成されています。

SQLCODE -805 と SQLCODE -551 エラー コード

IBM Db2 データベースに接続しようとすると、一般的なエラー SQLCODE -805 が表示されることがあります。これは、パッケージが NULLID またはその他のコレクション (Power Query パッケージ接続 構成で指定) に見つからないことを示します。 パッケージ バインド権限がないためにパッケージを作成できないことを示す一般的なエラー SQLCODE -551 が発生する場合もあります。

通常、SQLCODE -805 の後に SQLCODE -551 が続きますが、2 番目の例外のみが表示されます。 実際には、問題は同じです。 パッケージを NULLID または指定したコレクションにバインドする権限がありません。

通常、ほとんどの IBM Db2 管理者は、エンド・ユーザー (特に IBM z/OS (メインフレーム) または IBM i (AS/400) 環境) では、バインド・パッケージ権限をエンド・ユーザーに提供しません。 Linux、Unix、または Windows 上の Db2 は、ユーザー アカウントが既定でバインド特権を持つという点で異なります。この場合、ユーザー自身のコレクション (名前 = ユーザー ログイン名) に MSCS001 (Cursor Stability) パッケージが作成されます。

バインド・パッケージ特権がない場合は、Db2 管理者にパッケージ・バインディング権限を要求する必要があります。 このパッケージバインディングの権限を使用して、データベースに接続し、データを取得します。すると、パッケージが自動で作成されます。 その後、管理者はパッケージバインド権限を取り消すことができます。 また、その後、管理者はパッケージを他のコレクションに "バインド" して、コンカレンシーを高め、パッケージがバインドされる場所の内部標準とより適切に一致させることができます。

IBM Db2 for z/OS に接続する場合、Db2 管理者は次の手順を実行できます。

  1. 次のいずれかのコマンドを使用して、新しいパッケージをユーザーにバインドする権限を付与します。

    • システムに対するBINDADD権限を<authorization_name>に付与する
    • GRANT PACKADM ON <collection_name> TO <authorization_name>
  2. Power Query を使用して、IBM Db2 データベースに接続し、スキーマ、テーブル、およびビューの一覧を取得します。 Power Query IBM Db2 データベース コネクタは、パッケージ NULLID.MSCS001 を自動的に作成し、そのパッケージに対する実行権限をパブリックに付与します。

  3. 次のいずれかのコマンドを使用して、新しいパッケージをユーザーにバインドする権限を取り消します。

    • REVOKE BINDADD FROM <authorization_name>
    • REVOKE PACKADM ON <collection_name> FROM <authorization_name>

IBM Db2 for Linux、Unix、または Windows に接続する場合、Db2 管理者は次の手順を実行できます。

  1. データベースに対するBINDADDの権限をユーザー<authorization_name>へ付与する。

  2. Power Query を使用して、IBM Db2 データベースに接続し、スキーマ、テーブル、およびビューの一覧を取得します。 Power Query IBM Db2 コネクタによって、パッケージ NULLID.MSCS001 が自動的に作成され、そのパッケージに対する実行権限がパブリックに付与されます。

  3. REVOKE BINDADD ON DATABASE FROM USER <authorization_name>。

  4. パッケージ <の collection.package> に対する実行権限をユーザー <の認証名>に付与する。

IBM Db2 for i に接続する場合、Db2 管理者は次の手順を実行できます。

  1. WRKOBJ QSYS/CRTSQLPKG。 オブジェクト権限を変更するには、「2」と入力します。

  2. 権限を *EXCLUDE から PUBLIC または <authorization_name>に変更します。

  3. その後、権限を *EXCLUDE に戻します。

SQLCODE -360 エラー コード

IBM Db2 データベースに接続しようとすると、次のエラーが発生することがあります。

Microsoft Db2 Client: The host resource could not be found. Check that the Initial Catalog value matches the host resource name. SQLSTATE=HY000 SQLCODE=-360

このエラー メッセージは、データベースの名前に適切な値を入力しなかったことを示します。

SQLCODE -1336 エラー コード

The specified host could not be found.

名前を再確認し、ホストに到達可能であることを確認します。 たとえば、コマンド プロンプトで ping を使用してサーバーに到達し、IP アドレスが正しいことを確認したり、telnet 使用してサーバーと通信したりします。

SQLCODE -1037 エラー コード

Host is reachable, but is not responding on the specified port.

ポートは、サーバー名の末尾にコロンで区切って指定されます。 省略すると、既定値の 50000 が使用されます。

Db2 が Linux、Unix、および Windows に使用しているポートを見つけるには、次のコマンドを実行します。

db2 get dbm cfg | findstr SVCENAME

SVCENAME のエントリ (および TLS 暗号化接続のSSL_SVCENAME) の出力を確認します。 この値が数値の場合、それがポートです。 それ以外の場合は、システムの "services" テーブルで値を相互参照します。 これは通常、/etc/services または Windows の c:\windows\system32\drivers\etc\services にあります。

次のスクリーンショットは、Linux/Unix でのこのコマンドの出力を示しています。

Linux および Unix における db2 コマンドの出力を含むイメージ

次のスクリーンショットは、Windows でのこのコマンドの出力を示しています。

Windows の db2 コマンドの出力を含むイメージの

データベース名を決定する

使用するデータベース名を決定するには:

  1. IBM i で、DSPRDBDIREを実行します。

    リレーショナル データベース ディレクトリ エントリの表示結果を示す画像

  2. エントリの 1 つは、 *LOCALリモートロケーション を持つことになります。 このエントリを使用してください。

ポート番号を決定する

Microsoft ドライバーは、分散リレーショナル データベース アーキテクチャ (DRDA) プロトコルを使用してデータベースに接続します。 DRDA の既定のポートはポート 446 です。 最初にこの値を試してください。

DRDA サービスが実行されているポートを特定するには、次の手順を実行します。

  1. IBM i コマンド WRKSRVTBLEを実行します。

  2. DRDA のエントリが見つかるまで下にスクロールします。

    サービス テーブル エントリ

  3. DRDA サービスが稼働していて、そのポートでリッスンしていることを確認するには、NETSTAT実行します。

    DRDA リッスン を する

  4. オプション 3 (IPv4 の場合) またはオプション 6 (IPv6 の場合) のいずれかを選択します。

  5. F14 キーを押して名前の代わりにポート番号を表示し、該当するポートが表示されるまでスクロールします。 "Listen" の状態のエントリが必要です。

    IP 接続の状態

詳細情報