2015-02-09 37 views
0

我正在开发一个显示一些SSRS报告的ASP.NET Web应用程序。我的应用程序的数据库位于服务器的不同服务器中,因为报告使用来自两台服务器的数据,报告数据库服务器中的链接服务器与应用程序的服务器有关。如何参数化SSRS数据集中的链接服务器引用?

在数据集的报告我有一个查询波纹管:

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

这里只有3份报告,所以这是确定复制[linkedServer] [数据库名称]当我改变了应用程序。到另一个环境。

我的问题是:什么是参数化[linkedServer] [数据库名称]为了不更换需要每次服务器和/或数据库名称更改所有出现的最好方法?

+1

一种方法是动态sql。我想不出其他人。 – 2015-02-09 21:51:41

+0

如果您使用的是存储过程,那么使用'ssrs'参数的动态sql,如果查询那么您可以直接在该查询中包含'ssrs'参数 – 2015-02-10 06:31:07

回答

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只检索查询的结果。

相关问题