我们使用rs.exe为重布局到的ReportServer的部署。
作为数据源,共享数据集和的RDL驻留在不同的部署folders.After的RDL,RDL到共享数据集和共享数据集到的数据源之间的映射被去除。
我不得不每RDL手动映射到相应的数据集和DataSource。 我有200条RDL,它真的很难做手工。
我需要映射的RDL代码数据集部署的RDL后
可能一些机构来对我的要求一些代码帮助?
我们使用rs.exe为重布局到的ReportServer的部署。
作为数据源,共享数据集和的RDL驻留在不同的部署folders.After的RDL,RDL到共享数据集和共享数据集到的数据源之间的映射被去除。
我不得不每RDL手动映射到相应的数据集和DataSource。 我有200条RDL,它真的很难做手工。
我需要映射的RDL代码数据集部署的RDL后
可能一些机构来对我的要求一些代码帮助?
我创建了执行以下的rs.exe脚本:
部署基于文件Report.rdl的报告。 该报告有一个参照本发明的共享数据源和一个参照本发明的共享数据集。 该报告将被部署到报表服务器/目录。
设置数据源的报表服务器上现有的共享数据源的报告。 数据源是部署/数据来源/ DS。
设置报表服务器上现有的共享数据集报表中的数据集。 数据源是部署/数据集/数据集 。
该脚本包含以下代码:
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
这听起来像你已经成功地部署的报告。
因此,要注意的主要事情是代码片段更新数据源引用和数据集的参考。 要注意的方法是:
SetItemDataSources更新数据源 。
SetItemReferences更新的数据集 。
这是一个报告,所以你需要的收官代码在一个子例程部署脚本,但希望这将帮助你。