XMLA エンドポイント接続のトラブルシューティング

Power BI の XMLA エンドポイントは、ネイティブの Analysis Services 通信プロトコルを使用して、Power BI セマンティック モデルにアクセスします。 このため、XMLA エンドポイントのトラブルシューティングは、一般的な Analysis Services 接続のトラブルシューティングとほとんど同じです。 ただし、Power BI 固有の依存関係に関するいくつかの違いがあります。

開始する前に

XMLA エンドポイント シナリオのトラブルシューティングを行う前に、「XMLA エンドポイントを使用したセマンティック モデル接続」に記載されている基本事項を確認してください。 そこでは、最も一般的な XMLA エンドポイントのユースケースについて説明されています。 Power BI のトラブルシューティングのその他のガイド、「ゲートウェイのトラブルシューティング - Power BI」および「"Excel で分析" に関するトラブルシューティング」も役立ちます。

XMLA エンドポイントを有効にする

XMLA エンドポイントは、Power BI Premium、Premium Per User、Power BI Embedded のいずれの容量でも有効にすることができます。 メモリが 2.5 GB のみの A1 容量など、容量が少ない場合には、XMLA エンドポイントを [読み取り/書き込み] に設定しようとして、 [適用] を選択したとき、容量設定でエラーが発生することがあります。 エラーには、"There was an issue with your workload settings. Try again in a little while." (ワークロードの設定で問題が発生しました。しばらくしてからもう一度お試しください。) と表示されます。

次の 2 つの方法を試すことができます。

  • 容量に対する他のサービス (データフローなど) のメモリ消費量を 40% 以下に制限するか、不要なサービスを完全に無効にします。
  • 大きい容量の SKU にアップグレードします。 たとえば、容量を A1 から A3 にアップグレードすると、データフローを無効にしなくても、この構成の問題は解決します。

Power BI 管理ポータルでテナントレベルのエクスポート データ設定も有効にする必要があることに注意してください。 この設定は、[Excel で分析] 機能にも必要です。

クライアント接続を確立する

XMLA エンドポイントを有効にした後は、その容量でワークスペースへの接続をテストすることをお勧めします。 詳細については、「Premium ワークスペースに接続する」を参照してください。 また、XMLA の接続に関する現在の制約に関する役立つヒントや情報について、「接続の要件」のセクションを確認してください。

サービス プリンシパルを使用して接続する

サービス プリンシパルを有効にする」の説明に従い、テナント設定でサービス プリンシパルが Power BI API を使用できるようにした場合、サービス プリンシパルを使用して XMLA エンドポイントに接続できます。 サービス プリンシパルには、ワークスペースまたはセマンティック モデルのレベルで、通常のユーザーと同じレベルのアクセス許可が必要であることに注意してください。

サービス プリンシパルを使用するには、アプリケーション ID 情報を必ず次のように接続文字列に指定します。

  • User ID=<app:appid@tenantid>
  • Password=<application secret>

例:

Data Source=powerbi://api.powerbi.com/v1.0/myorg/Contoso;Initial Catalog=PowerBI_Dataset;User ID=app:91ab91bb-6b32-4f6d-8bbc-97a0f9f8906b@19373176-316e-4dc7-834c-328902628ad4;Password=6drX...;

次のエラー メッセージが表示される場合:

"We cannot connect to the semantic model due to incomplete account information. (アカウント情報が不完全なためセマンティック モデルに接続できません。) For service principals, make sure you specify the tenant ID together with the app ID using the format app:<appId>@<tenantId> then try again." (アカウント情報が不完全なためデータセットに接続できません。サービス プリンシパルについて、app:<appId>@<tenantId>という形式でテナント ID とアプリ ID を一緒に指定してから、やり直してみてください。)

正しい形式を使用して、アプリ ID と共にテナント ID を指定してください。

また、テナント ID を指定せずにアプリ ID を指定することもできます。 ただし、その場合は、データ ソース URL の myorg エイリアスを実際のテナント ID で置き換える必要があります。 そうすると、Power BI が、正しいテナントでサービス プリンシパルを見つけることができます。 ただし、ベスト プラクティスとしては、myorg エイリアスを使用し、ユーザー ID パラメーターにアプリ ID と共にテナント ID を指定することをお勧めします。

Microsoft Entra B2B との接続

Microsoft Entra 企業間取引 (B2B) は Power BI でサポートされており、XMLA エンドポイントを介したセマンティック モデルへのアクセスを外部ゲスト ユーザーに提供できます。 Power BI 管理ポータルで [外部ユーザーとコンテンツを共有する] 設定が有効になっていることを確認します。 詳細については、「Microsoft Entra B2B で外部ゲスト ユーザーに Power BI コンテンツを配布する」をご覧ください。

セマンティック モデルの配置

Azure Analysis Services のサーバー リソースへの配置とほとんど同じように、Visual Studio (SSDT) の表形式モデル プロジェクトを、Premium 容量に割り当てられているワークスペースに配置できます。 ただし、そこに配置する際には、追加の考慮事項がいくつかあります。 「XMLA エンドポイントを使用したセマンティック モデル接続」の記事の「Visual Studio からモデル プロジェクトを配置する (SSDT)」セクションをご覧ください。

新しいモデルを配置する

既定の構成では、Visual Studio は配置操作の一部としてモデルの処理を試み、データ ソースからセマンティック モデルにデータを読み込みます。 「Visual Studio からモデル プロジェクトを配置する (SSDT)」で説明しているように、データ ソースの資格情報を配置操作の中で指定できないために、この操作が失敗する可能性があります。 代わりに、データ ソースに対する資格情報が既存のどのセマンティック モデルにもまだ定義されていない場合は、Power BI のユーザー インターフェイスを使ってセマンティック モデルの設定でデータ ソースの資格情報を指定する必要があります ([セマンティック モデル]>[設定]>[データ ソースの資格情報]>[資格情報の編集])。 データ ソースの資格情報が定義されていると、Power BI は、メタデータの配置が成功してセマンティック モデルが作成された後で、すべての新しいセマンティック モデルに対し、このデータ ソースへの資格情報を自動的に適用できます。

Power BI が新しいセマンティック モデルをデータ ソースの資格情報にバインドできない場合は、エラー "データベースを処理できません。 理由: 変更をサーバーに保存できませんでした。" が、次に示すように、エラーコード "DMTS_DatasourceHasNoCredentialError" とともに表示されます。

Model deployment error

処理のエラーを回避するには、次の図のように、 [配置オプション]>[処理オプション][処理しない] に設定します。 そうすると、Visual Studio によりメタデータのみが配置されます。 その後、データ ソースの資格情報を構成し、Power BI のユーザー インターフェイスでセマンティック モデルの [今すぐ更新] をクリックします。

Do not process option

既存のセマンティック モデルからの新しいプロジェクト

Visual Studio で既存のセマンティック モデルからメタデータをインポートして新しい表形式プロジェクトを作成することは、サポートされていません。 ただし、SQL Server Management Studio を使ってセマンティック モデルに接続し、メタデータをスクリプト化して、他の表形式プロジェクトで再利用することはできます。

Power BI へのセマンティック モデルの移行

表形式モデルには 1500 (以上) の互換性レベルを指定することをお勧めします。 この互換性レベルでは、ほとんどの機能とデータ ソースの種類がサポートされます。 新しい互換性レベルには、以前のレベルとの下位互換性があります。

サポートされているデータ プロバイダー

1500 互換性レベルで、Power BI は次の種類のデータ ソースをサポートします。

  • プロバイダー データ ソース (モデル メタデータ内の接続文字列を使用するレガシ)。
  • 構造化されたデータ ソース (1400 互換性レベルで導入)。
  • データ ソースのインライン M 宣言 (Power BI Desktop によって宣言)。

構造化されたデータ ソースを使用することをお勧めします。これは、インポート データ フローを実行するときに Visual Studio によって既定で作成されます。 ただし、プロバイダーのデータ ソースを使用する Power BI に既存のモデルを移行する場合は、プロバイダーのデータ ソースが、サポート対象のデータ プロバイダーを使用することを確認してください。 具体的には、Microsoft OLE DB Driver for SQL Server およびサードパーティの ODBC ドライバーです。 OLE DB Driver for SQL Server の場合は、データ ソース定義を .NET Framework Data Provider for SQL Server に切り替える必要があります。 Power BI サービスで使用できない可能性があるサードパーティ ODBC ドライバーの場合は、代わりに、構造化データ ソースの定義に切り替える必要があります。

また、SQL Server データ ソース定義内の古い Microsoft OLE DB Driver for SQL Server (SQLNCLI11) も .NET Framework Data Provider for SQL Server で置き換えることをお勧めします。

次の表に示すのは、対応する OLE DB Driver for SQL Server の接続文字列を置き換える、.NET Framework Data Provider for SQL Server 接続文字列の例です。

OLE DB Driver for SQL Server SQL Server 用の .NET Framework データ プロバイダー
Provider=SQLNCLI11;Data Source=sqldb.database.windows.net;Initial Catalog=AdventureWorksDW;Trusted_Connection=yes; Data Source=sqldb.database.windows.net;Initial Catalog=AdventureWorksDW2016;Integrated Security=SSPI;Encrypt=true;TrustServerCertificate=false

パーティション ソースを相互参照する

複数の種類のデータ ソースがあるようにパーティション ソースにも複数の種類があり、表形式モデルに組み込んでデータをテーブルにインポートできます。 具体的には、パーティションは、クエリ パーティション ソースまたは M パーティション ソースを使用できます。 これらのパーティション ソースの種類は、プロバイダーのデータ ソースまたは構造化されたデータ ソースを参照できます。 Azure Analysis Services の表形式モデルでは、これらのさまざまなデータ ソースとパーティションの種類の相互参照がサポートされていますが、Power BI ではより厳密なリレーションシップが適用されます。 クエリ パーティション ソースはプロバイダー データ ソースを参照し、M パーティション ソースは構造化データ ソースを参照する必要があります。 その他の組み合わせは Power BI ではサポートされません。 相互参照セマンティック モデルを移行したい場合は、次の表で説明する構成がサポートされています。

データ ソース パーティション ソース コメント XMLA エンドポイントでのサポート
プロバイダー データ ソース クエリ パーティション ソース AS エンジンは、カートリッジベースの接続スタックを使用してデータ ソースにアクセスします。 はい
プロバイダー データ ソース M パーティション ソース AS エンジンは、プロバイダー データ ソースを一般的な構造化データ ソースに変換し、マッシュアップ エンジンを使用してデータをインポートします。 いいえ
構造化データ ソース クエリ パーティション ソース AS エンジンは、パーティション ソースに対するネイティブのクエリを M 式にラップしてから、マッシュアップ エンジンを使用してデータをインポートします。 いいえ
構造化データ ソース M パーティション ソース AS エンジンは、マッシュアップ エンジンを使用してデータをインポートします。 はい

データ ソースと権限の借用

プロバイダーのデータ ソースに対して定義できる権限の借用の設定は、Power BI には関係ありません。 Power BI は、セマンティック モデルの設定に基づき、異なるメカニズムを使ってデータ ソースの資格情報を管理します。 このため、プロバイダー データ ソースを作成する場合は、 [サービス アカウント] を必ず選択してください。

Impersonate service account

きめ細かい処理

Power BI でスケジュールされた更新またはオンデマンドの更新をトリガーすると、通常、Power BI はセマンティック モデル全体を更新します。 多くの場合、選択して更新を実行する方が効率的です。 次のように SQL Server Management Studio (SSMS) で、またはサードパーティのツールまたはスクリプトを使用して、きめ細かい処理を実行できます。

Process tables in SSMS

Refresh TMSL コマンドでのオーバーライド

Refresh コマンド (TMSL) でのオーバーライドを使用すると、ユーザーは更新操作のために別のパーティション クエリ定義またはデータ ソース定義を選択できます。

電子メール サブスクリプション

XMLA エンドポイントを使って更新されたセマンティック モデルは、メール サブスクリプションをトリガーしません。

Premium 容量でのエラー

SSMS でのサーバーへの接続エラー

SQL Server Management Studio (SSMS) を使用して Power BI ワークスペースに接続すると、次のエラーが表示される場合があります。

TITLE: Connect to Server
------------------------------
Cannot connect to powerbi://api.powerbi.com/v1.0/[tenant name]/[workspace name].
------------------------------
ADDITIONAL INFORMATION: 
The remote server returned an error: (400) Bad Request.
Technical Details:
RootActivityId: 
Date (UTC): 10/6/2021 1:03:25 AM (Microsoft.AnalysisServices.AdomdClient)
------------------------------
The remote server returned an error: (400) Bad Request. (System)

SSMS を使用して Power BI ワークスペースに接続する場合は、必ず次のようになるようにしてください。

SSMS でのクエリの実行

Power BI Premium または Power BI Embedded 容量のワークスペースに接続されているとき、SQL Server Management Studio に次のエラーが表示されることがあります。

Executing the query ...
Error -1052311437: We had to move the session with ID '<Session ID>' to another Power BI Premium node. Moving the session temporarily interrupted this trace - tracing will resume automatically as soon as the session has been fully moved to the new node.

これは、SSMS 18.8 以上で無視できる情報メッセージです。クライアント ライブラリは自動的に再接続するためです。 SSMS v18.7.1 以下でインストールされたクライアント ライブラリではセッション トレーシングがサポートされないことにご注意ください。 最新の SSMS をダウンロードしてください

XMLA エンドポイントを使って大規模なコマンドを実行する

XMLA エンドポイントを使って大規模なコマンドを実行すると、次のエラーが発生する場合があります。

Executing the query ...
Error -1052311437:
The remote server returned an error: (400) Bad Request.

Technical Details:
RootActivityId: 3716c0f7-3d01-4595-8061-e6b2bd9f3428
Date (UTC): 11/13/2020 7:57:16 PM
Run complete

v18.7.1 以前の SSMS を使用し、Power BI Premium または Power BI Embedded 容量でセマンティック モデルに対して長時間 (>1 分) の更新操作を実行すると、更新操作が成功しても、SSMS にこのエラーが表示されることがあります。 これは、更新要求の状態が間違って追跡記録されるというクライアント ライブラリの既知の問題によるものです。 これは SSMS 18.8 以降で解決されています。 最新の SSMS をダウンロードしてください

このエラーは、大規模な要求を Premium クラスター内の別のノードにリダイレクトする必要がある場合にも発生する可能性があります。 大きな TMSL スクリプトを使ってセマンティック モデルを作成または変更しようとしたときによく見られます。 このような場合、通常は、コマンドを実行する前にデータベースの名前に初期カタログを指定することで、エラーを回避できます。

新しいデータベースを作成するときに、次のように空のセマンティック モデルを作成できます。

{   
  "create": {   
    "database": {   
      "name": "DatabaseName"
    }   
  }   
} 

新しいセマンティック モデルを作成した後、初期カタログを指定してから、セマンティック モデルを変更します。

その他のクライアント アプリケーションとツール

Excel、Power BI Desktop、SSMS などのクライアント アプリケーションとツール、または Power BI Premium 容量のセマンティック モデルに接続して操作する外部ツールでは、"リモート サーバーがエラーを返しました: (400) 無効な要求" というエラーが発生することがあります。 このエラーは、基になる DAX クエリまたは XMLA コマンドの実行時間が長い場合に特に発生することがあります。 潜在的なエラーを削減するには、最新バージョンの Analysis Services クライアント ライブラリを通常の更新プログラムでインストールする最新のアプリケーションとツールを忘れずに使用してください。 アプリケーションまたはツールに関係なく、XMLA エンドポイントを介して Premium 容量のセマンティック モデルに接続して使用するために必要なクライアント ライブラリの最小バージョンは次のとおりです。

クライアント ライブラリ バージョン
MSOLAP 15.1.65.22
AMO 19.12.7.0
ADOMD 19.12.7.0

SSMS でロール メンバーシップを編集する

SQL Server Management Studio (SSMS) v18.8 を使用してセマンティック モデルのロール メンバーシップを編集するとき、SSMS に次のエラーが表示されることがあります。

Failed to save modifications to the server. 
Error returned: ‘Metadata change of current operation cannot be resolved, please check the command or try again later.’ 

これはアプリ サービス REST API の既知の問題によるものです。 これは今後のリリースで解決される予定です。 それまでの間は、このエラーを回避するには、 [ロールのプロパティ][スクリプト] をクリックし、次の TMSL コマンドを入力し、実行してください。

{ 
  "createOrReplace": { 
    "object": { 
      "database": "AdventureWorks", 
      "role": "Role" 
    }, 
    "role": { 
      "name": "Role", 
      "modelPermission": "read", 
      "members": [ 
        { 
          "memberName": "xxxx", 
          "identityProvider": "AzureAD" 
        }, 
        { 
          "memberName": “xxxx” 
          "identityProvider": "AzureAD" 
        } 
      ] 
    } 
  } 
} 

発行エラー - ライブ接続されたセマンティック モデル

Analysis Services コネクタを使って、ライブ接続されたセマンティック モデルを再発行すると、"同じ名前のレポートまたはセマンティック モデルが既に存在します。既存のセマンティック モデルを削除するか、名前を変更してから、もう一度お試しください。" というエラーが表示される場合があります。

Couldn't publish to Power BI error.

これは、接続文字列は異なるが、既存のセマンティック モデルと同じ名前で発行されているセマンティック モデルが原因です。 この問題を解決するには、既存のセマンティック モデルを削除するか名前を変更します。 また、レポートに依存しているアプリがあれば、それを必ず再発行してください。 必要であれば、最新のレポートにアクセスできるよう、新しいレポートでブックマークを更新するように、下流のユーザーにもお知らせください。

ワークスペースまたはサーバーのエイリアス

Azure Analysis Services とは異なり、Premium ワークスペースではサーバー名のエイリアスサポートされていません

DISCOVER_M_EXPRESSIONS

DMV DISCOVER_M_EXPRESSIONS データ管理ビュー (DMV) は現在、XMLA エンドポイントを使用する Power BI ではサポートされていません。 アプリケーションでは表形式オブジェクト モデル (TOM) を使用し、データ モデルで使用される M 式を取得できます。

Premium でのリソース管理コマンドのメモリ制限

Premium 容量は、リソース管理を使って、1 つのセマンティック モデル操作が、容量に使用できる (SKU によって決まる) メモリ リソースの量を超えないようにします。 たとえば、P1 サブスクリプションにはアイテムあたり 25 GB の "有効なメモリ制限" があり、P2 サブスクリプションの場合は 50 GB の制限、P3 サブスクリプションの場合は 100 GB の制限です。 セマンティック モデル (データベース) のサイズに加えて、有効なメモリの制限は、作成変更最新の情報に更新などの基になるセマンティック モデル コマンド操作にも適用されます。

コマンドの有効メモリ制限は、容量のメモリ制限 (SKU によって決まります) または DbpropMsmdRequestMemoryLimit XMLA プロパティの値の小さい方に基づいています。

たとえば、P1 容量の場合は次のようになります。

  • DbpropMsmdRequestMemoryLimit = 0 (または指定なし) の場合、コマンドの有効メモリ制限は 25 GB です。

  • DbpropMsmdRequestMemoryLimit = 5 GB の場合、コマンドの有効メモリ制限は 5 GB です。

  • DbpropMsmdRequestMemoryLimit = 50 GB の場合、コマンドの有効メモリ制限は 25 GB です。

通常、コマンドの有効メモリ制限は、セマンティック モデルに許可されているメモリの容量 (25 GB、50 GB、100 GB) と、コマンドの実行開始時にセマンティック モデルが既に消費しているメモリ量を基に計算されます。 たとえば、P1 容量で 12 GB を使用するセマンティック モデルの場合、新しいコマンドに対する有効メモリ制限は 13 GB になります。 ただし、アプリケーションで必要に応じて指定した場合、DbPropMsmdRequestMemoryLimit XMLA プロパティによって有効メモリ制限をさらに制限できます。 前の例を使用して、DbPropMsmdRequestMemoryLimit プロパティで 10 GB が指定されている場合、コマンドの有効制限はさらに 10 GB に減少します。

コマンド操作で、制限で許可されているよりも多くのメモリを消費しようとすると、操作が失敗し、エラーが返されます。 たとえば、次のエラーは、コマンドの実行開始時にセマンティック モデルによって既に 12 GB (12,288 MB) が消費されており、コマンド操作に 13 GB (13,312 MB) の有効制限が割り当てられたので、25 GB (P1 容量) という有効メモリ制限を超えたことを示しています。

"Resource governing: This operation was canceled because there wasn’t enough memory to finish running it. (リソース管理: 実行を完了するのに必要なメモリが不足しているため、この操作はキャンセルされました) Either increase the memory of the Premium capacity where this semantic model is hosted or reduce the memory footprint of your semantic model by doing things like limiting the amount of imported data. (このセマンティック モデルがホストされている Premium 容量のメモリを増やすか、インポートされたデータの量を制限するなどしてセマンティック モデルのメモリ占有領域を減らしてください。) More details: consumed memory 13312 MB, memory limit 13312 MB, database size before command execution 12288 MB. (詳細: 消費メモリ 13,312 MB、メモリ制限 13,312 MB、コマンド実行前のデータベース サイズ 12,288 MB。) Learn more: https://go.microsoft.com/fwlink/?linkid=2159753. (詳細情報: https://go.microsoft.com/fwlink/?linkid=2159753。) "

次のエラーに示すように、"消費メモリ" は 0 であっても、"コマンド実行前のデータベース サイズ" に表示されている量が、既に有効メモリ制限を超える場合もあります。 これは、セマンティック モデルによって既に使われているメモリの量が SKU のメモリ制限を超えているため、操作の実行を開始できなかったことを意味します。

"Resource governing: This operation was canceled because there wasn’t enough memory to finish running it. (リソース管理: 実行を完了するのに必要なメモリが不足しているため、この操作はキャンセルされました) Either increase the memory of the Premium capacity where this semantic model is hosted or reduce the memory footprint of your semantic model by doing things like limiting the amount of imported data. (このセマンティック モデルがホストされている Premium 容量のメモリを増やすか、インポートされたデータの量を制限するなどしてセマンティック モデルのメモリ占有領域を減らしてください。) More details: consumed memory 0 MB, memory limit 25600 MB, database size before command execution 26000 MB. (詳細: 消費メモリ 0 MB、メモリ制限 25,600 MB、コマンド実行前のデータベース サイズ 26,000 MB。) Learn more: https://go.microsoft.com/fwlink/?linkid=2159753. (詳細情報: https://go.microsoft.com/fwlink/?linkid=2159753。) "

有効メモリ制限を超える可能性を減らすには:

  • セマンティック モデルのために、より大きな Premium 容量 (SKU) サイズにアップグレードします。
  • 更新ごとに読み込まれるデータの量を制限することにより、セマンティック モデルのメモリ占有領域を減らします。
  • XMLA エンドポイントを介した更新操作の場合は、並行して処理されるパーティション数を減らします。 1 つのコマンドで並行処理されるパーティション数が多すぎると、有効メモリ制限を超える場合があります。