2

我有一个 SSRS 报告,它在其查询中连接到两个数据库。

SELECT table
FROM MainDB1.DBO.Table AS table1
JOIN MainDB2.DBO.Table AS table2 ON table1.ID = table2.ID

它使用 SSRS 数据源连接到其服务器。当我想编辑报告时,我必须在单独的服务器上进行,该服务器具有相同的数据库,但它们的名称不同。

我必须手动编辑查询使其看起来像这样才能更改报告

SELECT table
FROM DevDB1.DBO.Table AS table1
JOIN DevDB2.DBO.Table AS table2 ON table1.ID = table2.ID

每个报表服务器数据源都具有相同的名称并在报表中被引用。

数据集中有没有办法加入这两个数据库?或者有没有人有自己的方式来处理这个问题?这将使这个过程更有效率。

谢谢

4

1 回答 1

0

您应该遵循 Michael Fredrickson 的建议,即在您的环境中使用一致的命名,并为您的链接服务器使用服务器别名以保持这种一致性。

话虽如此,考虑到您的环境方式,我建议使用基于表达式的 Sql 语句,该语句使用隐藏参数来实现您想要的。所以设置两个隐藏字符串参数:

@Db1默认为DevDB1@Db2默认为DevDb2

现在为您的 Sql 语句使用以下表达式:

="SELECT table "
&"FROM " + Parameters!Db1.Value + ".DBO.Table AS table1 "
&"JOIN " + Parameters!Db2.Value + ".DBO.Table AS table2 ON table1.ID = table2.ID"

这会根据数据库参数的值构建正确的 Sql。

部署到 Reporting Services 服务器后,进入服务器并编辑参数:

@Db1默认为MainDB1@Db2默认为MainDB2

随后重新部署报表时,本地参数默认值不会覆盖服务器上已更改的默认值,因此这些服务器值将保留为您设置的值。

当人们运行报告时,他们不会看到隐藏的参数。它们只是在本地用于开发和在服务器上用于生产具有不同的设置。

于 2013-10-30T03:00:30.963 回答