Power BI の XMLA エンドポイントは、Power BI セマンティック モデルにアクセスするために、ネイティブの Analysis Services 通信プロトコルに依存しています。 このため、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 エンドポイントを 読み取り/書き込みに 設定し、[ 適用] を選択しようとすると、容量設定でエラーが発生する可能性があります。 エラーの状態は、"ワークロード設定に問題が発生しました。 しばらくしてからもう一度やり直してください。"。
試してみることを次に示します。
- データフローなど、容量に対する他のサービスのメモリ消費量を 40% 以下に制限するか、不要なサービスを完全に無効にします。
- 容量を大きな SKU にアップグレードします。 たとえば、A1 から A3 容量にアップグレードすると、データフローを無効にしなくても、この構成の問題が解決されます。
また、Power BI 管理ポータルでテナント レベルの [データのエクスポート] 設定 を有効にする必要があることに注意してください。 この設定は、[Excel で分析] 機能にも必要です。
クライアント接続の確立
XMLA エンドポイントを有効にした後は、指定された容量内のワークスペースへの接続をテストすることをお勧めします。 詳細については、「 Premium ワークスペースへの接続」を参照してください。 また、現在の XMLA 接続の制限に関する役立つヒントと情報については、「 接続の要件 」セクションを必ずお読みください。
サービス プリンシパルとの接続
サービス プリンシパルの有効化に関するページの説明に従って、サービス プリンシパルが Power BI API を使用できるようにテナント設定を有効にしている場合は、 サービス プリンシパルを使用して XMLA エンドポイントに接続できます。 サービス プリンシパルには、通常のユーザーと同じレベルのアクセス許可がワークスペースレベルまたはセマンティック モデル レベルで必要であることに注意してください。
サービス プリンシパルを使用するには、接続文字列で次のようにアプリケーション ID 情報を指定してください。
- ユーザー ID - app:appid@tenantid
-
パスワード
cert:thumbprint (セキュリティに推奨)
Data Source=powerbi://api.powerbi.com/v1.0/myorg/Contoso;Initial Catalog=PowerBI_Dataset;User ID=app:<appid>;Password=cert:<thumbprint>;- アプリケーション シークレット
Data Source=powerbi://api.powerbi.com/v1.0/myorg/Contoso;Initial Catalog=PowerBI_Dataset;User ID=app:<appid>;Password=<secret>;
次のエラー メッセージが表示される場合:
"アカウント情報が不完全なため、セマンティック モデルに接続できません。 サービス プリンシパルの場合は、app:<appId>@<tenantId> 形式を使用して、アプリ ID と共にテナント ID を指定してから、もう一度やり直してください。
正しい形式を使用して、テナント ID とアプリ ID を指定してください。
テナント ID を指定せずにアプリ ID を指定することも有効です。 ただし、この場合は、データ ソース URL の myorg エイリアスを実際のテナント ID に置き換える必要があります。 その後、Power BI は、適切なテナントでサービス プリンシパルを見つけることができます。 ただし、ベスト プラクティスとして、 myorg エイリアスを使用し、テナント ID とアプリ ID を User ID パラメーターで指定します。
Microsoft Entra B2B との接続
Power BI での Microsoft Entra 企業間 (B2B) のサポートにより、外部ゲスト ユーザーに XMLA エンドポイント経由でセマンティック モデルへのアクセスを提供できます。 Power BI 管理ポータル で [外部ユーザーとコンテンツを共有 する] 設定が有効になっていることを確認します。 詳細については、「 Microsoft Entra B2B を使用して外部ゲスト ユーザーに Power BI コンテンツを配布する」を参照してください。
セマンティック モデルのデプロイ
Visual Studio (SSDT) の表形式モデル プロジェクトは、Azure Analysis Services のサーバー リソースとほぼ同じように、Premium 容量に割り当てられたワークスペースにデプロイできます。 ただし、デプロイする場合は、いくつかの追加の考慮事項があります。 XMLA エンドポイントとのセマンティック モデルの接続に関する記事の 「Visual Studio (SSDT) からモデル プロジェクトをデプロイ する」セクションを必ず確認してください。
新しいモデルのデプロイ
既定の構成では、Visual Studio は、データ ソースからセマンティック モデルにデータを読み込むデプロイ操作の一環としてモデルを処理しようとします。 「Visual Studio からのモデル プロジェクトの配置 (SSDT)」で説明されているように、データ ソースの資格情報をデプロイ操作の一部として指定できないため、この操作は失敗する可能性があります。 代わりに、データ ソースの資格情報が既存のセマンティック モデルに対してまだ定義されていない場合は、Power BI ユーザー インターフェイス (セマンティック モデル>Data ソース資格情報>編集資格情報) を使用して、>の設定でデータ ソース資格情報を指定する必要があります。 データ ソースの資格情報を定義すると、Power BI は、メタデータのデプロイが成功し、セマンティック モデルが作成された後、新しいセマンティック モデルに対してこのデータ ソースに資格情報を自動的に適用できます。
Power BI で新しいセマンティック モデルをデータ ソース資格情報にバインドできない場合は、"データベースを処理できません。 理由: サーバーへの変更を保存できませんでした。"エラーコード "DMTS_DatasourceHasNoCredentialError"
処理エラーを回避するには、次の図に示すように、 展開オプション>[処理オプション] を[処理しない] に設定します。 その後、Visual Studio はメタデータのみをデプロイします。 その後、データ ソースの資格情報を構成し、Power BI ユーザー インターフェイスのセマンティック モデルの [ 今すぐ更新 ] をクリックします。
既存のセマンティック モデルからの新しいプロジェクト
既存のセマンティック モデルからメタデータをインポートして 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 接続文字列の例を示します。
| SQL Server 用 OLE DB ドライバー | .NET Framework SQL Server用データプロバイダー |
|---|---|
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 ではサポートされていません。 相互参照セマンティック モデルを移行する場合は、次の表に、サポートされている構成について説明します。
| データ ソース | パーティション ソース | Comments | XMLA エンドポイントでサポートされます |
|---|---|---|---|
| プロバイダー データ ソース | クエリ パーティション ソース | AS エンジンは、カートリッジ ベースの接続スタックを使用してデータ ソースにアクセスします。 | イエス |
| プロバイダー データ ソース | Mパーティションのソース | AS エンジンは、プロバイダー データ ソースを汎用構造化データ ソースに変換し、Mashup エンジンを使用してデータをインポートします。 | いいえ |
| 構造化データ ソース | クエリ パーティション ソース | AS エンジンは、パーティション ソースのネイティブ クエリを M 式にラップした後、Mashup エンジンを使用してデータをインポートします。 | いいえ |
| 構造化データ ソース | Mパーティションのソース | AS エンジンはマッシュアップ エンジンを使用してデータをインポートします。 | イエス |
データ ソースと偽装
プロバイダー データ ソースに対して定義できる偽装設定は、Power BI には関係ありません。 Power BI では、セマンティック モデルの設定に基づいて異なるメカニズムを使用して、データ ソースの資格情報を管理します。 このため、プロバイダー データ ソースを作成する場合は、 必ず [サービス アカウント ] を選択してください。
きめ細かな加工
Power BI でスケジュールされた更新またはオンデマンド更新をトリガーすると、通常、Power BI はセマンティック モデル全体を更新します。 多くの場合、更新をより選択的に実行する方が効率的です。 次の図に示すように、SQL Server Management Studio (SSMS) で、またはサードパーティのツールまたはスクリプトを使用して、きめ細かい処理タスクを実行できます。
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 ワークスペースに接続する場合は、次のことを確認します。
- テナントの容量に対して XMLA エンドポイント設定が有効になっています。 詳細については、「 XMLA の読み取り/書き込みを有効にする」を参照してください。
- テナント設定で、オンプレミスのセマンティックモデルとともに、ExcelでXMLAエンドポイントを許可して分析する設定が有効になっています。
- 最新バージョンの SSMS を使用しています。 最新のものをダウンロードします。
SSMS でのクエリ実行
Power BI Premium または Power BIEmbedded 容量のワークスペースに接続すると、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
SSMS v18.7.1 以下を使用して、Power BI Premium または > 容量のセマンティック モデルで実行時間の長い (1 分) 更新操作を実行すると、更新操作が成功した場合でも、SSMS でこのエラーが表示されることがあります。 これは、更新要求の状態が誤って追跡されるクライアント ライブラリの既知の問題が原因です。 これは SSMS 18.8 以降で解決されます。 最新の SSMS をダウンロードします。
このエラーは、非常に大きな要求を Premium クラスター内の別のノードにリダイレクトする必要がある場合にも発生する可能性があります。 これは、大規模な TMSL スクリプトを使用してセマンティック モデルを作成または変更しようとしたときによく見られます。 このような場合は、通常、コマンドを実行する前にデータベースの名前に初期カタログを指定することで、エラーを回避できます。
新しいデータベースを作成するときに、空のセマンティック モデルを作成できます。次に例を示します。
{
"create": {
"database": {
"name": "DatabaseName"
}
}
}
新しいセマンティック モデルを作成した後、初期カタログを指定し、セマンティック モデルに変更を加えます。
その他のクライアント アプリケーションとツール
Power BI Premium 容量のセマンティック モデルに接続して操作する Excel、Power BI Desktop、SSMS、外部ツールなどのクライアント アプリケーションとツールでは、次のエラーが発生する可能性があります。 リモート サーバーからエラーが返されました: (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.'
これは、App Services 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 コネクタを使用してライブ接続セマンティック モデルを再発行すると、次のエラーが表示されることがあります。"同じ名前の既存のレポート/セマンティック モデルがあります。既存のセマンティック モデルを削除するか、名前を変更して再試行してください。"
これは、セマンティック モデルが別の接続文字列を持ち、既存のセマンティック モデルと同じ名前を持っていることが原因です。 この問題を解決するには、既存のセマンティック モデルを削除するか、名前を変更します。 また、レポートに依存するすべてのアプリを必ず再発行してください。 必要に応じて、ダウンストリーム ユーザーに、ブックマークを新しいレポート アドレスで更新し、最新のレポートに確実にアクセスするように通知する必要があります。
ライブ接続セマンティック モデルを読み込めない
新しい Live Connected モデルを作成しようとしているユーザー、または 2024 年 3 月以降のバージョンの Power BI Desktop を使用して既存の Live Connected モデルを開こうとすると、次のようなエラーが発生する可能性があります。"Power BI サービスでモデルに接続できませんでした。データセットが削除、名前変更、移動されたか、アクセス許可がない可能性があります。"
このエラーは、ユーザーの環境でプロキシが構成されていて、プロキシが Power BI サービスへのアクセスを妨げている場合に発生する可能性があります。 2024 年 3 月バージョンの Power BI Desktop 以降、ユーザー™の環境では、エンドポイント *.pbidedicated.windows.net またはソブリン クラウドの対応する Power BI サービス エンドポイントで Power BI サービスへの接続を許可する必要があります。
問題がプロキシ設定の結果であるかどうかを検証するには、Power BI Desktop の SQL Server Analysis Services コネクタ、または SQL Server Management Studio などのファースト パーティまたはサード パーティの外部ツールを試して、任意の Premium ワークスペースに接続します。
一般的な XML/A 接続のテストの詳細については、この記事の 「クライアント接続の確立 」セクションを参照してください。
Excel ブックが開けない
Excel ワークブックがエラーが発生したため、開けないことがあります。"データ ソースの初期化に失敗しました。データベース サーバーを確認するか、データベース管理者に問い合わせてください。" ブックに Power BI セマンティック モデルへの接続が含まれている場合は、接続文字列に "Catalog Rebound=True" プロパティが含まれているかどうかを確認します。 プロパティが見つかった場合は、そのプロパティを削除し、ブックを保存した後に、もう一度開いてみてください。
Power BI セマンティック モデルへの接続がプロバイダーによって最適化されている場合、"Catalog Rebound=True" プロパティは、新しいバージョンの Excel で Analysis Services OLE DB Provider (MSOLAP) によって自動的に追加されます。 プロパティはブックに保存されるため、最適化をサポートしていない以前のバージョンのプロバイダーを使用している Excel で同じブックを開くと、Excel はブックを開けなくなります。
"Catalog Rebound" は内部使用のみを目的としています。
ワークスペース/サーバーのエイリアス
Azure Analysis Services とは異なり、Premium ワークスペースではサーバー名 のエイリアスはサポートされていません 。
DISCOVER_M_EXPRESSIONS
現在、DMV DISCOVER_M_EXPRESSIONS データ管理ビュー (DMV) は、XMLA エンドポイントを使用する Power BI ではサポートされていません。 アプリケーションでは、テーブル オブジェクト モデル (TOM) を使用して、データ モデルで使用される M 式を取得できます。
Premium でのコマンド メモリ制限を管理するリソース
Premium 容量では、リソース ガバナンスを使用して、単一のセマンティック モデル操作が、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 (12288 MB) を消費し、コマンド操作に有効な制限 13 GB (13312 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. More details: consumed memory 13312 MB, memory limit 13312 MB, database size before command execution 12288 MB. Learn more: 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. More details: consumed memory 0 MB, memory limit 25600 MB, database size before command execution 26000 MB. Learn more: https://go.microsoft.com/fwlink/?linkid=2159753.
メモリ エラーと回復について
セマンティック モデル間の負荷分散は、システムによって自動的に管理されます。 ここで説明するようなメモリ エラーは、容量の需要が高い期間中に一時的に発生する可能性があります。 ほとんどの場合、システムはメモリ リソースが使用可能になると迅速に回復します。 メモリ エラーが発生した場合は、しばらく待ってから操作を再試行してください。
メモリ エラーが解決しない場合や頻繁に発生する場合は、容量に追加のリソースまたは最適化が必要になる可能性があることを示します。 このような場合は、次の軽減策を検討するか、容量のサイズ設定とワークロードの最適化について Microsoft サポートにお問い合わせください。