以下を実行する rs.exe スクリプトを作成しました。
Report.rdlファイルに基づいてレポートを展開します。レポートには、共有データ ソースへの参照が 1 つと、共有データセットへの参照が 1 つあります。レポートは、レポート サーバー / ディレクトリに配置されます。
レポートのデータ ソースを、レポート サーバー上の既存の共有データ ソースに設定します。データ ソースは/Data Sources/DSとしてデプロイされます。
レポートの DataSet をレポート サーバー上の既存の共有 DataSet に設定します。データ ソースは/Datasets/DataSetとしてデプロイされます。
スクリプトには次のコードが含まれています。
Public Sub Main()
Dim definition As [Byte]() = Nothing
Dim warnings As Warning() = Nothing
'Read report from file on disk
Dim stream As FileStream = File.OpenRead("Report.rdl")
definition = New [Byte](stream.Length - 1) {}
stream.Read(definition, 0, CInt(stream.Length))
stream.Close()
'Deploy report
'ItemType, name, folder, overwrite, definition, properties
rs.CreateCatalogItem("Report", "Report", "/", True, definition, Nothing, warnings)
'Update existing report Data Souce reference to Shared Data Source on server
Dim dataSourceRefs(0) As DataSource
Dim dsr As New DataSourceReference
dsr.Reference = "/Data Sources/DS"
Dim ds As New DataSource
ds.Item = CType(dsr, DataSourceDefinitionOrReference)
ds.Name = "DS"
dataSourceRefs(0) = ds
rs.SetItemDataSources("/Report", dataSourceRefs)
'Update existing report DataSet reference to Shared DataSet on server
Dim dataSetRefs(0) as ItemReference
Dim dset as New ItemReference
dset.Name = "DataSet"
dset.Reference = "/Datasets/DataSet"
dataSetRefs(0) = dset
rs.SetItemReferences("/Report", dataSetRefs)
End Sub
すでにレポートを正常に展開しているようです。
したがって、注目すべき主な点は、Data Source 参照と DataSet 参照を更新するコード スニペットです。注意すべき方法は次のとおりです。
SetItemDataSourcesを使用してData Sourceを更新します。
SetItemReferencesを使用してDataSetを更新します。
これは 1 つのレポートのためのものなので、展開スクリプトのサブルーチンでコードをラップする必要がありますが、これが役立つことを願っています。