【问题标题】:SSRS RDL Mapping datasources programmaticallySSRS RDL 以编程方式映射数据源
【发布时间】:2013-04-18 13:12:20
【问题描述】:

我们使用 rs.exe 将 RDL 部署到 ReportServer。

由于DataSource,Shared DataSet 和RDLs 位于不同的文件夹中。部署RDLs 后,RDL 到Shared DataSets 和Shared DataSets 到DataSource 之间的映射被移除。

我必须手动将每个 RDL 映射到相应的 DataSet 和 DataSource。我有 200 个 RDL,手动操作真的很难。

我需要在部署 RDL 后将 RDL 映射到数据集的代码

有人可以帮助我编写一些代码来满足我的要求吗?

【问题讨论】:

    标签: deployment ssrs-2008 reporting-services rdl


    【解决方案1】:

    我创建了一个执行以下操作的 rs.exe 脚本:

    1. 基于文件 Report.rdl 部署报告。该报表有一个对共享数据源的引用和一个对共享数据集的引用。报表部署到报表服务器/目录。

    2. 将报表的数据源设置为报表服务器上的现有共享数据源。数据源部署为 /Data Sources/DS

    3. 将报表的数据集设置为报表服务器上现有的共享数据集。数据源部署为 /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
    

    听起来您已经成功部署报告。

    因此,主要需要注意的是更新数据源引用和数据集引用的代码 sn-ps。需要注意的方法有:

    SetItemDataSources 更新数据源

    SetItemReferences 更新DataSet

    这是针对一份报告的,因此您需要将代码封装在部署脚本的子例程中,但希望这会对您有所帮助。

    【讨论】:

    • 你看过上面的解决方案了吗?你有什么运气吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多