IBM Db2 データベース
まとめ
項目 | 説明 |
---|---|
リリース状態 | 一般提供 |
製品 | Excel Power BI (セマンティック モデル) Power BI (データフロー) ファブリック (データフロー Gen2) Power Apps (データフロー) Dynamics 365 Customer Insights |
サポートされている認証の種類 | 基本 データベース Windows |
関数リファレンス ドキュメント | DB2.Database |
Note
デプロイ スケジュールにより、またホスト固有の機能があることにより、ある製品に存在する機能が他の製品にはない場合があります。
前提条件
既定では、IBM Db2 データベース コネクタは Microsoft ドライバーを使用してデータに接続します。 Power Query Desktop の詳細オプションで IBM ドライバーを使用する場合は、まず、データへの接続に使用するマシンに .NET 用 IBM Db2 ドライバーをインストールする必要があります。 このドライバーの名前は時々変わるため、必ず .NET で動作する IBM Db2 ドライバーをインストールしてください。 .NET 用 IBM Db2 ドライバーをダウンロード、インストール、構成する方法については、初期バージョン 11.5 クライアントとドライバーのダウンロードに関するページを参照してください。 詳細情報: ドライバーの制限事項、IBM Db2 ドライバーがインストールされていることを確認する
サポートされる機能
- インポート
- DirectQuery (Power BI セマンティック モデル)
- 高度なオプション
- ドライバー (IBM または Microsoft)
- 分単位のコマンド タイムアウト
- パッケージ コレクション
- SQL ステートメント
- リレーションシップ列を含める
- 階層全体を使ってナビゲートする
Power Query Desktop から IBM Db2 データベースに接続する
接続するには、以下の手順を実行します。
[データの取得] から [IBM Db2 データベース] オプションを選択します。
接続先の IBM Db2 サーバーを [サーバー] に指定します。 ポートが必要な場合は、ServerName:Port という形式を使用してポートを指定します。ここで Port はポート番号です。 また、アクセスする IBM Db2 データベースを [データベース] に入力します。 この例では、サーバー名とポートは
TestIBMDb2server.contoso.com:4000
であり、アクセスされる IBM Db2 データベースはNORTHWD2
です。Power BI Desktop から接続する場合は、[インポート] または [DirectQuery] のどちらかのデータ接続モードを選択します。 これらの例の手順の残りの部分では、インポート データ接続モードを使用します。 DirectQuery の詳細については、「Power BI Desktop で DirectQuery を使用する」を参照してください。
Note
既定で、[IBM Db2 データベース] ダイアログ ボックスでは、サインイン時に Microsoft ドライバーが使用されます。 IBM ドライバーを使用する場合は、[詳細オプション] を開き、[IBM] を選択します。 詳細情報: 詳細オプションを使用して接続
データ接続モードとして [DirectQuery] を選択した場合、詳細オプションの [SQL ステートメント] が有効になります。 現在、DirectQuery では、IBM Db2 コネクタのネイティブ データベース クエリ以外にクエリのプッシュ ダウンはサポートされていません。
[OK] を選択します。
この IBM Db2 データベースに初めて接続する場合は、使用する認証の種類を選択し、資格情報を入力してから、[接続] を選択します。 認証の詳細については、「データ ソースを使用した認証」を参照してください。
既定では、Power Query では、暗号化された接続を使用して IBM Db2 データベースへの接続が試行されます。 Power Query で暗号化された接続を使用して接続できない場合は、[接続できません] ダイアログ ボックスが表示されます。 暗号化されていない接続を使用して接続するには、[OK] を選択します。
[ナビゲーター] で、必要とするデータを選択してから、[読み込み] を選択してデータを読み込むか、[データの変換] を選択してデータを変換します。
Power Query Online から IBM Db2 データベースに接続する
接続するには、以下の手順を実行します。
[Power Query - データ ソースへの接続] ページで [IBM Db2 データベース] オプションを選択します。
接続先の IBM Db2 サーバーを [サーバー] に指定します。 ポートが必要な場合は、ServerName:Port という形式を使用してポートを指定します。ここで Port はポート番号です。 また、アクセスする IBM Db2 データベースを [データベース] に入力します。 この例では、サーバー名とポートは
TestIBMDb2server.contoso.com:4000
であり、アクセスされる IBM Db2 データベースはNORTHWD2
ですオンプレミス データ ゲートウェイの名前を選択します。
Note
IBM Db2 データベースがローカル ネットワーク上にあるか、オンラインにあるかに関係なく、このコネクタのオンプレミス データ ゲートウェイを選択する必要があります。
この IBM Db2 データベースに初めて接続する場合は、[認証の種類] で接続の資格情報の種類を選択します。 Windows 認証ではなく IBM Db2 データベース内で作成されたアカウントを使用する場合は、[基本] を選択します。
資格情報を入力します。
暗号化された接続を使用する場合は、[暗号化された接続を使用する] を選択します。暗号化されていない接続を使用する場合は、オプションをオフにします。
[次へ] を選択して続行します。
[ナビゲーター] で、必要とするデータを選択してから、 [データの変換] を選択して、Power Query エディターでデータを変換します。
詳細オプションを使用して接続する
Power Query では、必要に応じてクエリに追加できる詳細オプションのセットが用意されています。
次の表に、Power Query で設定できるすべての詳細オプションを示します。
詳細オプション | 説明 |
---|---|
ドライバー | IBM Db2 データベースへの接続に使用するドライバーを決定します。 選択肢は IBM と Windows (既定値) です。 IBM ドライバーを選択する場合は、まず、マシンに .NET 用の IBM Db2 ドライバーがインストールされていることを確認する必要があります。 このオプションは Power Query Desktop でのみ使用できます。 詳細情報: IBM Db2 ドライバーがインストールされていることを確認する |
分単位のコマンド タイムアウト | 接続が 10 分 (既定のタイムアウト) を超える場合は、別の値を分単位で入力して、より長い時間接続を維持できます。 |
パッケージ コレクション | パッケージを検索する場所を指定します。 パッケージは、SQL ステートメントを処理するときに、Db2 によって使用される制御構造であり、必要に応じて自動的に作成されます。 既定では、このオプションでは値 NULLID が使用されます。 Microsoft ドライバーを使用する場合にのみ使用できます。 詳細情報: DB2 パッケージ: 概念、例、一般的な問題 |
SQL ステートメント | 詳細については、「ネイティブ データベース クエリを使用してデータベースからデータをインポートする」を参照してください。 |
リレーションシップ列を含める | オンにした場合は、他のテーブルとのリレーションシップがある列が含められます。 このボックスをオフにすると、それらの列は表示されません。 |
階層全体を使ってナビゲートする | オンにすると、接続しているデータベース内のテーブルの完全な階層がナビゲーターに表示されます。 オフにすると、ナビゲーターには、列と行にデータが含まれているテーブルのみが表示されます。 |
必要とする詳細オプションを選択したら、Power Query デスクトップの [OK] または Power Query Online の [次へ] を選択して、IBM Db2 データベースに接続します。
問題と制限事項
ドライバーの制限事項
Microsoft のドライバーは、Microsoft Host Integration Server で使用されるものと同じであり、"ADO.NET Provider for DB2" と呼ばれます。 IBM ドライバーは、.NET で動作する IBM Db/2 ドライバーです。 このドライバーの名前は時々変わるため、.NET で動作するものであることを確認してください。これは、OLE/DB、ODBC、JDBC で動作する IBM Db2 ドライバーとは異なります。
Power Query Desktop を使用している場合は、Microsoft ドライバー (既定値) または IBM ドライバーのどちらでも選択できます。 現時点では、Power Query Online では Microsoft ドライバーのみが使用されます。 各ドライバーには制限があります。
- Microsoft ドライバ
- トランスポート層セキュリティ (TLS) をサポートしていません
- IBM ドライバー
- .NET 用 IBM Db2 ドライバーを使用している場合、IBM Db2 データベース コネクタは、メインフレームまたは 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 ドライバーがインストールされていることを確認するには、次の操作を行います。
マシンで Windows PowerShell を開きます。
次のコマンドを入力します。
[System.Data.Common.DbProviderFactories]::GetFactoryClasses() | ogv
表示されるダイアログ ボックスで、[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 管理者は次の手順を行うことができます。
次のいずれかのコマンドを使用して、新しいパッケージをバインドする権限をユーザーに付与します。
- システム上の BINDADD を <authorization_name>に許可します
- <collection_name> に <authorization_name> にパッケージを許可します
Power Query を使用して、IBM Db2 データベースに接続し、スキーマ、テーブル、ビューの一覧を取得します。 Power Query IBM Db2 データベース コネクタでは、パッケージ NULLID.MSCS001 が自動的に作成され、続いて、パッケージでの実行権限がパブリックに付与されます。
次のいずれかのコマンドを使用して、新しいパッケージをバインドする権限をユーザーから取り消します。
- <authorization_name> から BINDADD を取り消します
- <collection_name>の PACKADM を <authorization_name>から取り消します
IBM Db2 for Linux、Unix、または Windows に接続する場合、Db2 管理者は次の手順を行うことができます。
データベースの BINDADD をユーザー <authorization_name> に付与します。
Power Query を使用して、IBM Db2 データベースに接続し、スキーマ、テーブル、ビューの一覧を取得します。 Power Query IBM Db2 コネクタでは、パッケージ NULLID.MSCS001 が自動的に作成され、続いて、パッケージでの実行権限がパブリックに付与されます。
ユーザー <authorization_name> からデータベースの BINDADD を取り消します。
パッケージ<collection.package> の実行をユーザー <authorization_name> に許可します。
IBM Db2 for i に接続する場合、Db2 管理者は次の手順を行うことができます。
WRKOBJ QSYS/CRTSQLPKG。 オブジェクトの権限を変更するには、「2」と入力します。
権限を *EXCLUDE から PUBLIC または <authorization_name> に変更します。
その後、権限を *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 でのこのコマンドの出力を示しています。
次のスクリーンショットは、Windows でのこのコマンドの出力を示しています。
データベース名を特定する
使用するデータベース名を特定するには、次の操作を行います。
IBM i で
DSPRDBDIRE
を実行します。エントリの 1 つに *LOCAL のリモートの場所があります。 このエントリが使用するエントリです。
ポート番号を特定する
Microsoft ドライバーでは、分散型リレーショナル データベース アーキテクチャ (DRDA) プロトコルを使用してデータベースに接続します。 DRDA 用の既定のポートは、ポート 446 です。 最初にこの値を試してください。
DRDA サービスが実行されているポートを特定するには、次の操作を実行します。
IBM i コマンド
WRKSRVTBLE
を実行します。DRDA のエントリが見つかるまで下にスクロールします。
DRDA サービスが起動し、そのポートでリッスンしていることを確認するには、
NETSTAT
を実行します。オプション 3 (IPv4 の場合) またはオプション 6 (IPv6 の場合) のいずれかを選択します。
F14 キーを押して、名前の代わりにポート番号を確認し、当該のポートが表示されるまでスクロールします。 "Listen" という状態のエントリがあるはずです。