はじめに
以前からSQL Server Reporting Services(SSRS)を使っているけど、Power BIも使っている状況だし、折角なのでPower BIに全部持っていきたいなと思うことは結構あるかと思う。今回はSSRSの.rdlレポートをPower BIに移行することを試したので、どのようにして移行できるかをここにメモする。
移行パターン
移行方法は大きく以下の2つになる。
- .rdlレポートのみをLift and Shiftする
- データソースを変更せずに、レポートファイルをPower BIプラットフォームに移行する。
- Power BIからデータソースへのアクセス経路を確保するために、オンプレミスデータゲートウェイが必要
- データソースとレポートの両方を完全に移行する。
- データソースをFabric LakehouseやWarehouseなどに移行する。
- レポートが新しいデータソースを参照するように改修する必要がある。
移行方法
.rdlレポートのみをLift and Shiftする
.rdl レポートの移行方式
| ソース環境 | 移行方式 |
|---|---|
| Power BI Report Server および SSRS 2017 以降 | レポートを Power BI に発行するための組み込みツールを使用可能。 Power BI への .rdl ファイルの発行 |
| 以前のバージョンの SQL Server の移行ツール (SQL Server 2012 ~ SQL Server 2016) |
RDL 移行ツールを使用。移行ツールは以下を実行可能: - サポートされていないデータ ソースおよびサポートされていないレポート機能をチェックする。 - "共有" リソースを "埋め込み" リソースに変換する - 共有データ ソースは埋め込みデータ ソースになる。 - 共有データセットは埋め込みデータセットになる。 - チェックに合格したレポートを、"ページ分割されたレポート" として、指定した Power BI ワークスペースに発行。 |
移行できないレポートサーバ項目や機能
以下の種類のレポート サーバー項目はPower BIに移行できない。
- 共有データ ソースと共有データセット: RDL移行ツールによって、共有のデータ ソースとデータセットが埋め込みのデータ ソースとデータセットに自動的に変換される(サポートされているデータ ソースが使われている場合)。
- 画像ファイルなどのリソース
- リンク レポート: リンクする "親" レポートが移行用に選択されているかどうかに関係なく、移行される。 Power BIサービスでは、それらは通常の.rdlレポートとなる。
- KPI: Power BI Report Server、またはReporting Services 2016以降 — Enterprise Editionのみ。
- モバイル レポート: Power BI Report Server、またはReporting Services 2016以降 — Enterprise Editionのみ。
- レポート モデル: 非推奨
- レポート パーツ: 非推奨
- カスタムフォント
- カスタムアセンブリ
- カスタムコードDLLファイルの参照
その他の事前準備とか考慮事項
- レポートの データソース のサポートを確認し、オンプレミスのデータ ソースとの接続を許可するように オンプレミスデータゲートウェイ を設定する。
- レポートの
UserID組み込みフィールドの確認。 レポート データをセキュリティで保護するためにUserIDを利用している場合は、Power BIのページ分割されたレポートでは、ユーザー プリンシパル名 (UPN) が返されることに注意。そのため、組み込みフィールドではdomain\usernameなどの NT アカウント名を返さず、username@adventureworks.comのような値を返す。 データセット定義と、場合によってはソースデータを修正する必要がある。 修正して発行したら、データ アクセス許可が期待どおりに動作することを確認するためにレポートを入念にテストする必要がある。 - レポートの
ExecutionTime組み込みフィールドの確認。 Power BIのページ分割されたレポートでは、組み込みフィールドから UTC で日時が返されます。 これは、レポートパラメーターのデフォルト値や、フッターなどに追加するレポート実行時間のラベルに影響する可能性がある。 - データソースがSQL Server (オンプレミス) の場合は、レポートでマップの視覚化が使用されていないことを確認。 マップの視覚化はSQL ServerのGEOGRAPHYのようなSpatial Data Typesに依存し、これらがオンプレミスデータゲートウェイ経由ではサポートされない。
- Power BIのページ分割されたレポートのサイジングに関しては このドキュメント が有用。
データソースへの接続
以下の図のように、.rdlレポートを移行する前に、Power BIからデータソースへの接続準備が必要。
オンプレミスデータゲートウェイについては こちら を参考にデータソースに近い場所でセットアップする。

.rdlレポートを移行
具体的な手順は このドキュメント にスクリーンショット付きで説明されているので、リンクに飛んでもらうとわかりやすい。
SSRS2027以降の場合はおおむね以下のような手順になる。
- レポートサーバポータルを開く
- 書くレポート定義をダウンロードし、.rdlファイルをローカル環境に保存
- 対象の.rdlファイルをレポートビルダーで開く(2022以降の新しいバージョンの場合はWebポータルから発行作業ができる)
- Entra IDでログインしてPower BIサービスに接続
-
発行を選択し、Power BIサービスを選択 - レポートを保存するワークスペースを選択
- 保存されたことを確認。非互換のものがあると失敗するのでエラーをよく見ること
SSRS2016以前の場合はRDL移行ツールを使用する
- RDL 移行ツールを使用するためにPower BI Report Builderをインストール
- インストールが完了したら、コマンドプロンプトで
RdlMigration.exeを実行。
RdlMigration <your Base url endpoint> <file Path> <WorkspaceName>
コマンド実行例:"/Sales" フォルダのレポートを Power BI の "Sales" ワークスペースにアップロード (コマンドを実行するとPower BIへのサインインが求められる)
RdlMigration https://ssrsservername/reportserver "/Sales" "Sales"
※ベースURLはSSRS Configuration Manager内で確認可能

データソースとレポートの両方を完全に移行する
.rdlファイルのLift and Shift方式では、既存のデータソースを変更しない。Fabric上にデータソースも移行する必要がある場合は、データ移行を行ったうえで、レポートでのデータセットの置換または再作成する必要がある。
Power BI Report Builderでは、最新のコネクターを使用して結構いろんなデータソースにアクセスできるようになっている。WarehouseやLakehouseについてもOneLakeメニューから指定可能。
レポートのデータセットの変更
Power BI Report Builderで対象の.rdlファイルを開く。

Datasetsを右クリックして Get data 開いて、新しいデータに接続。

データソース選択画面が開く。 View more をクリック。

Microsoft Fabricにフィルタし、ここではWarehouseを選択。(データを格納しているソースに読み替えてOK)

認証が通ると、候補のワークスペース > Warehouse がエクスプローラーペインに表示されるので、対象の Warehouseを展開して、読み込むテーブルを選択する。

選択したテーブルに対するPower Query開発画面に遷移。必要に応じて変換処理を作成し Create を押下。

次に以前のデータセットとデータソースを削除。それぞれ該当の名称を右クリックして Delete を押下。
データセット

レポートのオブジェクトのプロパティを開き、参照しているデータセットを新規作成したデータセットに切り替える。


切替が完了したらレポートの実行を行い、正常にレポートが動作することを確認する。必要に応じてレポート側の調整も行う。
Power BI Report Builderから修正したレポートをFabricのワークスペースに直接レポートを発行。

最後に、Fabricにアクセスし、発行したレポートが正常に動作することを確認。

その他動作が違う部分の対処案
- URLリンクを相対パスで使用している場合は、Power BI上では絶対パスに変更しなければならない。
- 絶対パスでHTTPで遷移していた内部リンクが動作しなくなる。Power BIはHTTPSのみが使用されるのでHTTPと書かれている場合はHTTPSに書き換える必要がある。
- URLリンクを使用すると別タブで開く動作となるため、回避したい場合かつ.rdlレポート間での遷移の場合はURLリンクの代わりに「ドリルスルー」を使用したほうがいい。
- Power BI Report Builderの GUI のツールでは共有データセットを埋め込みデータセットに変換する機能がない。その場合は付属のRdlMigration.exeを使用すればOK。
- SSRSのWebポータルのレポートの一覧から詳細の画面に入るようなランディングページは用意されない。代わりとして、Power BIのアプリとして発行することでレポート一覧から選択して表示するような類似の構造は用意できる。この場合はPower BIネイティブのレポートもまぜこぜで作れるのでこっちのほうがいいと思う。




