动态连接/基于表达式的连接字符串SSRS

时间:2013-09-06 13:38:05

标签: c# .net sql-server reporting-services

我需要为SSRS报告创建动态连接,其中连接信息(服务器和数据库)将以c#代码计算出来,因此不会与最终用户选择(服务器或数据库)。

此处捕获的是关于其负载的报告将连接到指定的数据库,然后在运行时使用当前连接填充其他几个参数,如下拉列表等。

对于同样的情况,我在SSRS中沿着基于表达式的连接字符串的路线走了一段路。这一切都运行良好,直到我保持“动态”连接参数类型“可见”,并在报告运行期间传递来自前端的连接字符串,这不是我想要的。

如何从后端运行带有动态连接的报表,然后在报表加载本身上填充其他参数?

2 个答案:

答案 0 :(得分:2)

好的,我想出了如何做到这一点......我在报表服务器上做了正确的事情(设置参数,可见性等)但在通知报表服务在当前报表执行期间包含新参数值时出错了所以参数值设置正确但不是当前执行周期的一部分。

为了实现这个目的,我在SSRS的ReportExecutionService上调用了LoadReport2方法 http://technet.microsoft.com/en-us/library/reportexecution2005.reportexecutionservice.loadreport2.aspx

这将返回ExecutionInfo2,其中包含当前报告的ExecutionId

http://technet.microsoft.com/en-us/library/reportexecution2005.executioninfo2.aspx

使用此ExecutionId并仅为参数设置值(在我的情况下为动态连接字符串参数)我想更改,调用SSRS报告服务的SetExecutionParameters2

SetExecutionParameters2(executionId,new ServiceValues {Name& Value})

http://technet.microsoft.com/en-us/library/reportexecution2005.reportexecutionservice.setexecutionparameters2.aspx

现在报告按预期运行,动态连接参数为Hidden,没有默认值,并且还使用动态连接在报告上加载相关参数:)

再次感谢Irb和Ian的输入

答案 1 :(得分:1)

在报告数据源中添加类似于以下内容的连接字符串:

="Data Source="+Parameters!DatabaseServerName.Value+";Initial Catalog="&Parameters!DatabaseName.Value

然后将两个参数添加到报表中。您需要在服务器上预先建立数据源凭据才能使其正常工作。