redwarrior’s diary

C#, ASP.NET, WEB, G*などの雑多な情報

SQL Server Reporting Services(SSRS)のデータソースで外部サービスを設定する

うかうかしていたら、前回の投稿から3ヶ月近くも空いてしまいました。気を取り直して記述します。

最近、SQL Server Reporting Services(SSRS)を触っていて、帳票出力には結構便利だという事がわかって来たので、それについて書きます。

データソースに外部サービスを設定する

SSRSは、SQL Serverに接続してデータを取得し、表示するのが基本的な使い方だと思います。このデータの取得元をデータソースと呼びます。

データソースには、外部のWebサービスを指定することが出来ます。データソースのプロパティ画面を開いて、[全般]メニューの型でXMLを選択すれば良いです。

参考ページ:Reporting Services でサポートされるデータ ソース (SSRS) - SQL Server Reporting Services (SSRS) | Microsoft Docs

注意点としては、返り値がXMLである事*1、リクエストがGETである事、Expressエディションでは使えない事です。

参考ページ:レポートサーバーの設定 - クリエイティブWeb *2

今回は、Redmine Rest Apiを外部サービスとして設定してみます。

データソースで式を使用する

データソースの取得の時点で、パラメータによって絞り込んだデータがほしい場合があると思います。その場合はデータソースで式を使用します。

式の例(Redmineのチケットと注記データの取得。issueIdはSSRSのパラメータ)

="http://(RedmineのURL)/issues/" & Parameters!issueId.Value & ".xml?key=(APIキー)&include=journals"

注意点としては、データソースで式を使用し、データセットのクエリ(クエリデザイナー)を開くと、以下のエラーが発生して実行が出来ない事です。

TITLE: Microsoft SQL Server Report Designer

データ ソースへの接続中にエラーが発生しました。テキスト ベースのクエリ デザイナーのみを使用できます。


ADDITIONAL INFORMATION:

接続文字列の式はデザイン時に評価できません。レポートをプレビューするか配置して、接続を検証する必要があります。 (Microsoft.ReportingServices.Designer.Controls)

レポートウィンドウのプレビューは出来ますが、やはり面倒なので開発中はデータソースは固定値にしておいた方が良さそうです。

以上です。

*1:Jsonは無理そうです

*2:「2. Express 版 SSRS の制限」を参照。SQL Server 2008 R2の話ですが、2017でもダメでした