2013-04-18 1 views
2

Мы используем rs.exe для развертывания RDL в ReportServer.SSRS RDL Программно программирование источников данных

Поскольку DataSource, Shared DataSet и RDL находятся в разных папках. После развертывания RDL удаляются сопоставление между RDL и Shared DataSets и DataSource.

Мне нужно сопоставить каждый RDL вручную с соответствующими DataSet и DataSource. У меня есть 200 RDL, и это действительно сложно сделать вручную.

Мне нужен код для картографирования лицензий RDL к наборам после развертывания лицензий RDL

Могут некоторые тела помочь с каким-то кодом для моего требования?

ответ

3

Я создал rs.exe скрипт, который выполняет следующие действия:

  1. развертывает отчет, основанный на файле Report.rdl. В отчете содержится одна ссылка на общий источник данных и одну ссылку на общий набор данных. Отчет развертывается в каталоге сервера отчетов.

  2. Устанавливает источник данных для отчета в существующий общий источник данных на сервере отчетов. Источник данных развернут как /Источники данных/DS.

  3. Установите DataSet для отчета в существующий общий DataSet на сервере отчетов. Источник данных развернут как /Наборы данных/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 

Это звучит, как вы уже развертывания отчетов успешно.

Итак, основные примечания - это фрагменты кода, которые обновляют ссылку источника данных и ссылку DataSet. Следует отметить следующие методы:

SetItemDataSources для обновления Источник данных.

SetItemReferences для обновления DataSet.

Это для одного отчета, поэтому вам нужно будет обернуть код в подпрограмме для вашего сценария развертывания, но, надеюсь, это поможет вам.

+0

Вы посмотрели на вышеупомянутое решение? Вам повезло с этим? –

 Смежные вопросы

  • Нет связанных вопросов^_^