12

現在、お客様ごとに、同じ SSRS レポート フォルダーとデータ ソース フォルダーを展開しています。これらのフォルダーの違いは、各フォルダーの名前とデータ ソースの接続文字列です。

レポート サーバー 2008 R2 を使用しています。

レポートとデータ ソース フォルダーを 1 つだけ維持し、レポートが表示される前にサーバー側でその接続文字列をプログラムで変更することはできますか?

そうでない場合、レポートのロジックを変更することで実現できるものですか? 現在、「共有データ ソース」オプションを使用しています。

4

2 に答える 2

11

これは、私たちの環境で行ったことです。独自の構成を持つ任意のクライアントに展開できる1セットのレポートを維持しています。

ここにはいくつかのオプションがあります。共有データソースを使用しているため、レポートごとにデータソースを定義する必要がないため、作業が簡単になります。

1.rs.exeユーティリティとスクリプトファイルを使用します

BooksOnlineのrs.exe

このプログラムを使用すると、レポートサーバーWebサービスと対話できるスクリプトファイル(VB.NET内)を作成できます。スクリプトファイル(Deploy.rssなど)を作成し、定義したカスタムパラメータを含むさまざまなパラメータを使用してrs.exeプログラムを呼び出します。

rs.exe -i DeployReports.rss -s http://server/ReportServer -v DatabaseInstance="SQL" -v DatabaseName="ReportDB" -v ReportFolder="ClientReports"

したがって、これはスクリプトDeployReports.rssを呼び出し、に接続しhttp://server/ReportServer、データソースとレポートフォルダーの作成に使用できる3つのユーザー定義パラメーターを使用します。

sciptファイルには、次のようなものがあります。

Public Sub Main()

    rs.Credentials = System.Net.CredentialCache.DefaultCredentials

    CreateFolder(reportFolder, "Report folder")
    CreateFolder(datasourceFolder, "Data source folder")
    CreateDataSource()

End Sub

次に、次のようなWebサービス呼び出しを行うことができます。

rs.CreateFolder(folderName, "/", Nothing)

'Define the data source definition.
Dim definition As New DataSourceDefinition()
definition.CredentialRetrieval = CredentialRetrievalEnum.Integrated
definition.ConnectString = "data source=" + DatabaseInstance + ";initial catalog=" + DatabaseName
definition.Enabled = True
definition.EnabledSpecified = True
definition.Extension = "SQL"
definition.ImpersonateUser = False
definition.ImpersonateUserSpecified = True
'Use the default prompt string.
definition.Prompt = Nothing
definition.WindowsCredentials = False

Try

    rs.CreateDataSource(datasource, datasourcePath, False, definition, Nothing)
    Console.WriteLine("Data source {0} created successfully", datasource)

Catch e As Exception

    Console.WriteLine(e.Message)

End Try

使用しているReportingServicesのバージョンを指定していないため、2008年を想定しています。SQLServerのバージョンによっては、使用できるエンドポイントが複数あることに注意してください。2005/2008エンドポイントは2008R2以降で非推奨になりましたが、引き続き使用できます。スクリプトを作成するときに覚えておくべきことです。

2.アプリケーションを介してSSRSWebサービスを呼び出します

レポートサーバーWebサービスの概要

上記のスクリプトから行われるのと同じ呼び出しは、他のアプリケーションでも行うことができます。したがって、WSDLを介してレポートサーバーWebサービスへの参照を追加するだけで、リモートサービスに接続し、そのメソッドを呼び出してレポートやデータソースなどを展開できます。

したがって、最終的にはレポートサーバーWebサービスに接続することになります。これは、使用するメディアだけを考慮する必要があります。

スクリプトを使用すると、コマンドラインからプログラムを実行するだけなので実行が簡単になりますが、独自のデプロイメントアプリケーションを作成すると、確実に柔軟性が高まります。スクリプトを実行することをお勧めします。そうすれば、プロセスを理解し、必要に応じてこれを特注のアプリケーションに移行できます。幸運を!

于 2013-01-27T12:20:25.030 に答える
5

式ベースの接続文字列を使用して、正しいデータベースを選択できます。これは、アプリケーションが渡すパラメーター、またはUserId グローバル変数に基づくことができます。これが機能するには、無人実行アカウントを構成する必要があると思います。

注:セキュリティへの影響に注意してください。機密データ (パスワードなど) をパラメーターに渡す場合、(a) データはネットワーク経由で送信され、(b) レポート サービス用の実行ログ テーブルに格納されることに注意してください。

于 2013-01-27T14:41:57.640 に答える