【问题标题】:How to change data source in reportviewer control如何在报表查看器控件中更改数据源
【发布时间】:2011-03-17 13:19:27
【问题描述】:

我的页面上有一个报告查看器 (Microsoft.ReportViewer.WebForms) 控件。我所有的报告都使用一个数据源。从我的 UAT 环境启动时,我希望能够让我的报告在不同的数据库上运行。所以报告的位置是一样的,但是数据来自不同的数据库。我似乎无法找到这是如何完成的,甚至可能吗?

编辑:它们是 SQL Server 上的服务器报告。我知道您可以以编程方式设置数据集,但我只是希望报告指向不同的数据库,并保持报告的其余部分完好无损。 2005年 TIA,

约翰

【问题讨论】:

  • 这些是本地报告还是服务器报告?示例:RDLC 与完整的 SSRS
  • 您想向报告传递连接字符串吗?这适用于需要使用不同数据库或位于不同服务器上的报表。

标签: asp.net reporting-services reportviewer


【解决方案1】:

您是否要将完整的连接字符串作为参数传递给报告?您可以这样做,但有时 SSRS 会变得有趣,并确保在部署新副本之前从服务器上删除报告...

1. 制作一个参数 - 让我们调用我们的 connectionStr。使其不为空,不为空,单选和文本作为数据类型。最终,您将希望隐藏此参数,但为了进行测试,请将其保持可见。

2. 因此,您将用作连接字符串的值...(为了测试,我将其设置为参数的默认值,在可用值部分下没有任何内容)
Data Source=MySQLServerName;Initial Catalog=MyDatabaseName;Persist Security Info=True;User ID=MyUserNameForTheServer;Password=MyPasswordForTheServer;MultipleActiveResultSets=True

3.您需要报表服务器上的无人值守执行帐户,否则您会得到:未指定无人值守执行帐户。 (rsInvalidDataSourceCredentialSetting)。
http://msdn.microsoft.com/en-us/library/ms156302.aspx我无法提供更多细节,因为我的老板必须为我做这部分。

4. 在 SSRS 中的数据源属性下...检查 Embedded Connection,选择类型(我的只是普通的 MS SQL Server),对于连接字符串,打开表达式框并输入:=Parameters!connectionStr.value,然后单击凭据并确保选择了最后一个选项,即没有凭据。

5. 当您尝试在设计视图中编辑该数据源的数据集时,您的数据集将不再满意,但您可以将数据源连接属性切换回原来的状态,而不是使用基于参数的连接字符串,用于编辑它们。

我的报告在不同的服务器上,也有不同的报告服务器实例。在某些服务器上,他们需要根据任何东西从各种数据库中获取数据。这样,使用连接字符串作为参数,我可以在任何地方使用相同的报告,并将它们部署到不同的服务器。如果您必须将此连接字符串传递给您的应用程序或报告查看器,我建议使用加密。

就像我说的...不过,当您开始执行此操作时,SSRS 会变得很有趣。执行此操作后,您的报告应始终在预览模式下工作,如果即使提供了正确的连接字符串也无法正常工作,那么您将遇到仅通过部署到服务器无法解决的问题。一旦它们在服务器上但无法工作,故障排除问题包括检查权限、确保报告接收正确的连接字符串以及使 SQL 数据库中的所有存储过程和函数都相同。

如果您只想传递数据库名称而其他一切都相同(服务器名称、用户名、密码),那么只需将连接字符串参数设置为等于您的数据库名称,并为数据源表达式值使用
@987654322 @
我需要传递整个内容,您可以使用凭证设置 - 您可以在其中为每个报告保存服务器用户名/密码信息,这样就不需要无人参与的执行帐户。

【讨论】:

  • 哇,我希望有更简单的东西。我试试这个。
猜你喜欢
  • 2011-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多