如何参数化 SSRS 数据集中的链接服务器引用?

How to parameterize linked server references in SSRS datasets?

我正在开发一个显示一些 SSRS 报告的 ASP.NET 网络应用程序。我的应用程序的数据库与我的报告数据库位于 不同的 服务器,考虑到报告使用来自两个服务器的数据,报告数据库服务器中有一个链接服务器到应用程序的服务器。

在其中一个数据集报告中,我有如下查询:

SELECT T.column1, T1.column2 FROM localTable T JOIN [linkedServer].[databasename].tablename T1 ON T.id = T1.id

只有 3 个报告,所以当我将应用程序更改为另一个环境时,可以复制 [linkedServer].[databasename]

我的问题是:参数化 [linkedServer].[databasename] 的最佳方法是什么,这样就不需要每次服务器 and/or 数据库名称更改?

在数据集中的查询字段旁边,有一个小 fx 允许您输入查询的表达式。

根据您的示例,查询将是

= "SELECT T.column1, T1.column2 FROM localTable T  JOIN [" + Parameters!ReportParameter2.Value + "].[databasename].tablename T1 ON T.id = T1.id"

之类的。

在题外话中,我还建议永远不要使用 server.database.owner.table 语法,而是使用 openquery(server, 'query')。这是出于性能原因,因为 server.database.owner.table 将复制整个 table 而 openquery 仅检索查询结果。