Wpf 我想从c#代码更新SSRS报告的共享数据源

Wpf 我想从c#代码更新SSRS报告的共享数据源,wpf,reporting-services,datasource,reportviewer,reportserver,Wpf,Reporting Services,Datasource,Reportviewer,Reportserver,我在ReportServer上部署了一个报表。此报表使用的共享数据源也部署在ReportServer上。 我使用WindowsFormsHost控件在WPF应用程序中使用ReportViewer。通过配置ReportViewer的ServerReport属性,我能够在我的应用程序中正确显示来自ReportServer的报告 我的问题是,我的报表正在使用的ReportServer上部署的共享数据源的connectionstring是否可以更改 实际上,我想对同一数据库的多个副本使用同一个报告进行测

我在ReportServer上部署了一个报表。此报表使用的共享数据源也部署在ReportServer上。 我使用WindowsFormsHost控件在WPF应用程序中使用ReportViewer。通过配置ReportViewer的ServerReport属性,我能够在我的应用程序中正确显示来自ReportServer的报告

我的问题是,我的报表正在使用的ReportServer上部署的共享数据源的connectionstring是否可以更改

实际上,我想对同一数据库的多个副本使用同一个报告进行测试和迁移


有谁能告诉我一个用c代码更新共享数据源的解决方案吗

无法通过ReportViewer更改报表的数据源。您可以使用web服务更改数据源,但这实际上会更改服务器上所有用户的数据源—可能不是您想要做的

我认为最接近的方法是使用嵌入式数据源构建报表,该数据源使用参数值来控制其连接字符串。您可以构建一个共享数据集,该数据集按名称(“测试”、“迁移”等)提供连接字符串,并将该名称作为参数传递给报表

您需要:

  • 不会更改的共享数据源
  • 一个共享数据集,返回连接名称列表,如“测试”和“迁移”。让我们称之为
    NamedConnections
    。这些可以来自共享数据源中的表,也可以在数据集的查询中硬编码
  • 一种共享数据集,它采用
    @NamedConnection
    参数并返回一个完整连接字符串的字符串值。同样,这些数据可能来自数据库,也可能是硬编码的。我们称之为
    SelectedConnection
  • 报告上的
    @NamedConnection
    参数。这应该是可见的,并且应该使用
    NamedConnections
    数据集获取其可用值
  • 报表上的
    @ConnectionString
    内部参数,该参数使用
    SelectedConnection
    数据集作为其默认值
  • 报表中不使用
    @ConnectionString
    参数的嵌入式数据源。这允许您使用数据集设计器构建数据集。我将其称为
    静态连接
  • 报表中使用
    @ConnectionString
    参数作为其连接字符串的嵌入式数据源。完成报表设计并准备部署后,将数据集切换为使用此数据源。让我们称之为
    DynamicConnection
  • 例如,现在使用ReportViewer,将值“Test”传递给
    @NamedConnection
    参数。然后,
    SelectedConnection
    数据集可以运行并向
    @ConnectionString
    参数提供适当的连接字符串,然后由
    DynamicConnection
    数据源使用


    实际的数据源引用永远不会更改,但其中的连接字符串会更改。

    我知道您可以检索数据源,但我认为您不能在ServerReport中设置它。您可以使用
    this.reportViewer1.LocalReport.DataSources.Add(ReportDataSource)
    在LocalReport中添加数据源,这就是限制我更新数据源的原因。