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

时间:2015-02-09 21:47:47

标签: asp.net sql-server tsql reporting-services linked-server

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

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

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

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

我的问题是:参数化 [linkedServer]。[databasename] 的最佳方法是什么,以便每次服务器和/或数据库名称更改时都不需要替换所有出现的内容

1 个答案:

答案 0 :(得分:2)

在数据集中的查询字段旁边,有一个小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.database.owner.table将复制整个表,而openquery只检索查询的结果。