在运行时动态更改报表的共享数据源

时间:2017-01-03 16:01:17

标签: reporting-services ssrs-2014

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

  1. 共享数据源由客户端的身份验证决定。就我而言,"客户"是一个.NET应用程序,而不是用户,所以如果这是一个可行的路径,那么我想以某种方式拥有MainDB(我称之为“共享数据”)共享数据由客户端登录的服务帐户选择的源。
  2. 将共享数据源的名称作为参数传递,并指示使用哪一个。鉴于我的所有客户都是“值得信赖的玩家”,我对此方法很满意。虽然每个客户都有自己的代表性服务帐户,但这只是一个很好的衡量标准,并不重要。因此,我们可以改为使用MainDBClient1DB等,而不仅仅是调用数据源Client2DB,等等。如果新的数据源意味着新的部署但是我需要,这没关系这可以很容易地扩展到大约50个不同的数据源。
  3. 为什么呢?因为我们为多个客户提供了多个/重复的生产应用程序副本,但我们不想复制所有内容,只需要复制Web应用程序和数据库。我们对一些常见的"后端"很好。的东西。对于SSRS,由于许可证的价格昂贵(以及我们的用户运行的报告很少),我们真的希望为所有客户提供一个后端(我实际上还有第二个用于手动灾难的待机状态)恢复情况 - 我们不需要太过花哨,因为报告是我们最不重要的DR问题。

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

1 个答案:

答案 0 :(得分:4)

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

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

enter image description here