我正在开发一个显示一些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] 的最佳方法是什么,以便每次服务器和/或数据库名称更改时都不需要替换所有出现的内容
答案 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只检索查询的结果。