如何在reportviewer控件中更改数据源

Joh*_*eer 1 asp.net reportviewer reporting-services

我的页面上有一个reportviewer(Microsoft.ReportViewer.WebForms)控件.我的所有报告都使用一个数据源.我希望能够从我的UAT环境启动时让我的报告在不同的数据库上运行.因此报告的位置是相同的,但数据来自不同的数据库.我似乎无法找到这是怎么做的,它甚至可能吗?

编辑:它们是SQL Server上的服务器报告.我知道你可以设置programificaly数据集,但我只是希望报告指向不同的数据库并保持报告的其余部分不变.2005年TIA,

约翰

glo*_*uin 7

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

1.创建一个参数 - 让我们调用我们的connectionStr.使其不为空,不为空,单选和文本作为数据类型.最后,您需要隐藏此参数,但为了进行测试,请将其保持可见状态.

2.所以你将用作连接字符串的值...(用于测试我将其设置为参数的默认值,没有任何内容放在可用值部分下)
数据源= MySQLServerName;初始目录= MyDatabaseName;持久安全Info = True;用户ID = MyUserNameForTheServer;密码= 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.当您尝试在设计视图中编辑数据源时,该数据源的数据集将不再高兴,但您可以将数据源连接属性切换回原样,而不是使用基于参数的连接字符串进行编辑.

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

就像我说的那样......当你开始这样做时,SSRS会很有趣.执行此操作后,您的报告应始终以预览模式运行,如果它们甚至在提供正确的连接字符串时也没有,那么您将遇到仅通过部署到服务器无法解决的问题.一旦它们在服务器上但无法正常工作,解决问题包括检查权限,确保报告收到正确的连接字符串并使SQL数据库中的所有存储过程和函数都完全相同.

如果你只想传递数据库名称,其他一切都是相同的(服务器名,用户名,密码),那么只需将连接字符串参数设置为等于你的数据库名称,并使用
="Data Source=MySQLServerName;Initial Catalog=" + Parameters!connectionString.value + ";Persist Security Info=True;User ID=MyUserNameForTheServer;Password=MyPasswordForTheServer;MultipleActiveResultSets=True"
我需要传递整个事物的数据源表达式值,您可以使用凭据设置 - 您可以在每个报告中保存服务器用户名/密码信息,以便不需要无人值守的执行帐户.