3

概要

Azure で SQL Server Reporting Services を使用しています。実行時に資格情報を含む接続文字列を動的に指定したい。ReportViewer コントロールを ASPX ページに埋め込んでレポートを実行します。

SSRS で実行アカウントを指定する限り、SSRS 2012 を使用してオンプレミスでこれを機能させることができます。ただし、Azure Reporting Services では実行アカウントを指定できないため、機能しません。

私の質問は、Azure でこれを機能させるにはどうすればよいですか? 具体的には、オンプレミスではなく Azure Reporting Services を使用する場合に、実行時に資格情報を含むデータベース接続文字列を指定する方法を教えてください。

詳細

これをオンプレミスで行う場合の重要な手順は次のとおりです。

  • 埋め込み接続を使用するようにレポートを設定します。
  • 「ConnectionString」などのパラメーターを定義します
  • 埋め込みデータ ソースで、接続文字列を "[@ConnectionString]" に設定します (式ビルダーを使用して、さまざまなパラメーターから接続文字列を作成することもできますが、違いは同じです)。
  • 埋め込みデータ ソースで、資格情報を「資格情報を使用しない」に設定します。
  • SSRS で実行アカウントを指定していることを確認してください
  • ASPXページで、次のようにします this.ReportViewer1.ServerReport.SetParameters(new ReportParameter("ConnectionString", connectionString, false));

SSRS on Azure では、実行アカウントを指定できないため、上記は機能しません。

基本的に、「資格情報を使用しない」を設定しようとして、実行アカウントが指定されていない場合、次のエラーが発生します。

現在のアクションを完了できません。ユーザー データ ソースの資格情報が要件を満たしていません。ユーザー データ ソースの資格情報がレポート サーバー データベースに格納されていないか、ユーザー データ ソースが資格情報を要求しないように構成されているが、無人実行アカウントが指定されていません。トレース ID は XXX です。マシン名は XXX です。(rsInvalidDataSourceCredentialSetting)

私が試したこと

これまで、埋め込みデータ ソースにダミーの認証情報を指定するなど、さまざまなことを試してきました。これを Azure で機能させる唯一の方法は、埋め込まれたデータ ソースで有効なデータベース資格情報を直接指定することです。「Azure SQL」の代わりに「SQL Server」タイプの接続文字列を使用しようとすることに関するアドバイスもいくつか見ましたが、ローカルで違いはないようです。 Azure SQL に設定します。私も実験しましたが、それも役に立たthis.ReportViewer1.ServerReport.SetDataSourceCredentialsないようです。コードをステップ実行すると、最初にレポートと通信しようとすると、その通信が資格情報を設定しようとする呼び出しであっても、エラーが発生します。

これについて私が最も苛立たしいと思うのは、それが完全に非論理的な依存関係のように見えることです。埋め込みデータ ソースで指定するデータベース資格情報は、実際にレポートを実行するために使用することはできません (それらは単なる SQL 資格情報であるため)。実行アカウントは、データベースにアクセスできない Windows アカウントです。したがって、実用的な理由がまったくない完全に恣意的な依存関係のように見えます。

4

1 に答える 1

0

サーバー上に汎用の "ReportUser" Windows アカウントを作成し、このアカウント ビューアーにレポートへのアクセス権を付与できる場合は、このソリューションを使用できます。

これを回避するには、レポートに 2 つのパラメーターを追加します。1. @DatabaseServerName 2. @DatabaseName

次に、レポート データ ソースで接続式を次のように設定します。

="Data Source="+Parameters!DatabaseServerName.Value+";Initial Catalog="&Parameters!DatabaseName.Value

レポートを開発するときは、有効な開発エンドポイントを指すレポートに TEST データ ソースを追加し、運用サーバーに展開する前に、上記の式を使用してデータ ソースを指すようにすべてのデータセットを設定する必要があります。

これを機能させるには、運用サーバーに "ReportUser" アカウントを作成し、動的データ ソースの資格情報をこのアカウントのユーザー名とパスワードに設定する必要があります。

于 2013-08-13T01:58:00.603 に答える