Security 动态设置SSRS报告的数据源,而无需无人参与执行帐户?

Security 动态设置SSRS报告的数据源,而无需无人参与执行帐户?,security,reporting-services,report,Security,Reporting Services,Report,我需要在运行时动态指定SSRS报告的数据源。我找到了以下解决方案: 几十年来,Crystal Reports等其他技术让我们能够非常轻松地随意更改数据源,因此我觉得奇怪的是,这些黑客仍然是实现这一点的最佳方式,但假设是这样的话:在不启用无人值守执行帐户的情况下,是否有可能做到这一点?下面是我如何更改数据源的运行时 创建报表参数数据库服务器 创建报表参数DatebaseName 为报告创建dsTest数据源(用于本地测试) 将dsTest数据源设置为指向测试数据库 创建另一个“dsDynami

我需要在运行时动态指定SSRS报告的数据源。我找到了以下解决方案:


几十年来,Crystal Reports等其他技术让我们能够非常轻松地随意更改数据源,因此我觉得奇怪的是,这些黑客仍然是实现这一点的最佳方式,但假设是这样的话:在不启用无人值守执行帐户的情况下,是否有可能做到这一点?

下面是我如何更改数据源的运行时

  • 创建报表参数数据库服务器
  • 创建报表参数DatebaseName
  • 为报告创建dsTest数据源(用于本地测试)
  • 将dsTest数据源设置为指向测试数据库
  • 创建另一个“dsDynamic”数据源,并将其连接字符串表达式设置为以下值:
    =“data source=“+Parameters!”!DatabaseServer.Value+“初始目录=”+参数!DatabaseName.Value

  • 通过将所有数据集设置为步骤3中创建的测试连接来构建和测试报告

  • 将报表的数据集设置为实时部署之前在步骤5中创建的动态数据集
  • 将数据库名称和服务器名称从应用程序发送到报表,以指向另一个数据库实例

  • SSRS开发通常归结为使用一系列丑陋的黑客来欺骗它,使其产生您想要的东西。但有时,退一步,看看总体需求,可以发现其他选择。您需要为不同的数据源运行的原因是什么?它们的数量有限吗?如果只部署同一报表的多个副本,每个副本使用不同的数据源,可能会更容易些吗?@kyzen是的,我认为一开始我们要做的就是这样(即使用不同的数据源部署副本)。我想更改数据源的原因有两个。第一个用于将报告指向开发服务器而不是生产服务器,另一个用于将数据放在单独数据库中的客户。您可以编写一个完全自定义的powershell部署脚本,或者在Visual Studio中使用多个部署配置,从而使这一过程更加轻松。VisualStudio的前期工作会少一些,但在部署结构方面会有些僵化。使用Powershell,您可以在外部存储配置数据(XML、表等),从长远来看,这会使管理复杂的部署规则变得更加容易。我甚至不记得我最后做了什么,但请将此标记为答案,因为这是唯一的一个,我想它对您有效:)我已经标记了此项,并且成功地使用了它。谢谢@lrb。第五步中的“&”是做什么的?我想我是在偷懒。SSRS接受+和&作为字符串连接。找到文章: