报表服务——我可以通过参数将连接字符串传递给子报表并用作订阅吗?



我试图获得一个SSRS报告与子报告工作作为订阅,但我失败了。手动执行报表时,报表可以正常工作。我尝试做的事情对于订阅来说可能太复杂了,但这里有一个大致的想法:

我的主要报告中有一个非常简单的查询,它建立了一个数据库列表。例如,我总共有10个数据库。我的主报表查询所有10个数据库,并返回每个数据库的实际数据库名称。然后,主报表将每个数据库名称作为参数传递给子报表。

子报表通过以下方式使用其连接字符串中的每个数据库名称:="Data Source=sql-server-name;" & "Initial Catalog=" & Parameters!ParentID.Value

我遇到的问题是双重的:

  1. 目前,我在为我的主报表创建订阅时收到一个错误。我收到的错误消息是Subscriptions cannot be created because the credentials used to run the report are not stored, or if a linked report, the link is no longer valid.,我已经尝试指定报表服务器上可用的每种可能的身份验证方法,包括"凭据安全存储",Windows集成安全等。
  2. 有一次,我创建了一个订阅,但是当订阅试图运行并发送电子邮件时,我收到的错误消息是:The current action cannot be completed. The user data source credentials do not meet the requirements to run this report or shared dataset. Either the user data source credentials are not stored in the report server database, or the user data source is configured not to require credentials but the unattended execution account is not specified. (rsInvalidDataSourceCredentialSetting)。为了解决这个问题,我最近尝试根据这里的建议创建一个"无人值勤执行帐户",但无法证明它是否有效,因为目前我无法修改我的订阅来安排测试(由于问题#1)。

我可以通过参数将连接字符串传递给子报表并让主报表作为订阅执行吗?如果有,怎么做?

不使用连接字符串,首选的方法是使用内置的Action选项转到子报表。在属性中,转到Action并选择"go to report"。指定报表后,可以添加要发送的参数列表。您甚至可以使用函数来确定要传递的值。

最新更新