【问题标题】:Dynamically changing Report's Shared Data Source at Runtime在运行时动态更改报表的共享数据源
【发布时间】:2017-01-03 16:01:17
【问题描述】:

我希望将 SSRS 用于多租户报告,并且我希望能够为我的报告提供运行时选择的共享数据源。我这是什么意思?好吧,我可以很灵活,但我认为最有可能的两种可能性是(不过,我也对其他可能性持开放态度):

  1. 共享数据源由客户端的身份验证决定。在我的情况下,“客户端”是一个 .NET 应用程序而不是用户,所以如果这是一条可行的路径,那么我想以某种方式选择 MainDB(这就是我所说的)共享数据源通过客户端登录的服务帐户。
  2. 将共享数据源的名称作为参数传递,并让其决定使用哪一个。鉴于我所有的客户都是“值得信赖的玩家”,我对这种方法感到满意。虽然每个客户都有自己的代表服务帐户,但这只是为了很好的衡量标准,并不重要。因此,不只是调用数据源MainDB,我们还可以使用Client1DBClient2DB 等。如果一个新的数据源意味着一个新的部署也没关系,但我需要它能够轻松地扩展到~50随着时间的推移,不同的数据源。

为什么?因为我们为多个客户提供生产应用程序的多个/复制副本,但我们不想复制所有内容,只复制 Web 应用程序和数据库。我们对一些常见的“后端”事情很好。对于 SSRS,由于许可证非常昂贵(而且我们的用户很少运行报告),​​我们真的希望为所有客户提供一个后端(实际上我有第二个后端待命以应对手动灾难恢复情况 - 我们在这里不需要太花哨,因为报告是我们最不重要的 DR 问题)。

我看到this question 指向this post,但我真的希望有比这更好的方法。由于所有这些额外的步骤/努力/限制/等,我宁愿只使用 PowerShell 来编写带有经过调整的硬编码数据源的报告的重复部署脚本,而不是对该帖子中的步骤进行标准化。这个解决方案对我来说太老套了,而且似乎根本无法很好地扩展。

【问题讨论】:

  • 这是一个老问题,但我想知道您是否曾经通过选项#2?我有同样的问题,将连接字符串作为参数传递给嵌入式数据源是我的场景中的一个问题。我需要一种方法让报表基于参数调用不同的共享数据源。

标签: reporting-services ssrs-2014


【解决方案1】:

我用了很多糟糕的方法(通常在动态脚本中硬编码),然后我发现它实际上非常简单。

不要使用共享连接,而是使用嵌入式连接并根据参数(或任何字符串操作代码)创建您的连接字符串......

【讨论】:

  • 遗憾的是,我需要使用共享数据源“因为原因”(沿着这些连接字符串可以由系统管理员在部署后进行管理)。消费应用程序没有数据库秘密/知识来传递连接字符串信息,所以这对我们来说不是一个好的选择,尽管它可能对许多其他人来说很棒!我们最终选择了我在问题中链接的非常不理想的选项。但是,由于此答案可能对其许多其他人非常有用,因此我将继续接受它,即使它对我们不起作用。
猜你喜欢
  • 1970-01-01
  • 2014-03-05
  • 2022-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-26
  • 2012-05-12
  • 1970-01-01
相关资源
最近更新 更多