SSRS报告具有多个数据库

时间:2014-02-26 11:51:44

标签: sql-server reporting-services sql-server-2008-r2 ssrs-2008

我正在创建一个SSRS报告,它将从两个不同的数据库中获取数据。问题是,开发和实时服务器中的数据库名称会有所不同。

我的问题是 - 1)我应该在Stored Proc级别做什么,以便在数据库名称发生变化时我不需要更改任何内容? 2)我应该在报告级别(或数据集)上做什么,以便我不需要为不同的数据库名称更改任何内容?

我在SQL Server 2008 R2上部署了SSRS。

4 个答案:

答案 0 :(得分:5)

您无需对存储过程执行任何操作。只需确保它在正确的Databse上。您可以在报告中使用参数处理各种数据库名称:

  1. 在报告中创建DBName参数
  2. 将您的数据源连接字符串设置为:="Data Source=YourServerName;Initial Catalog=" & Parameters!DBName.Value

答案 1 :(得分:1)

你被迫做动态sql。

您是否有办法检索数据库的名称并知道它是如何更改的?

您可以想象将名称作为参数传递。 并且为了防止sql注入到easyli,你可以检查变量是否存在于sys.databases和另一个数据集中,如果第一个为真,你可以将值传递给你的存储过程并执行它。

对于存储过程,创建一个变量nvarchar(max),在该变量中添加所有代码,将引号加倍并提取数据库名称,使其像这样。

declare @sql = 'select * from [' + @mydb + '].dbo.mytable'

答案 2 :(得分:1)

通常,在创建报表时,我会创建指向不同数据库的共享数据源。您可以将它们视为基本上是连接字符串。 SSRS的优点在于,您可以拥有一个上传到服务器的数据源,并可以在不同的报告中使用。然后,如果您需要更改数据库的位置,则只需对SSRS服务器上的共享数据源执行一次,并且所有报告都将指向新位置。此外,这可以将服务器与报告分开。因此,在您的实例中,您可以将相同的报告上载到多个服务器,并根据您在该服务器上的数据源将报告连接到不同的服务器。

  1. 首先在项目中创建数据源
  2. 将该数据源添加到您的报告中(添加数据源,使用共享数据源参考)
  3. 将报表部署到服务器时,需要部署共享数据源和报表
  4. 部署报告后,打开该报告的上下文菜单,然后单击“管理数据源”。现在将此设置为您的共享数据源。每个服务器可能使用不同的共享数据源。 (我现在只能访问Sharepoint Integrated服务器,因此本机模式SSRS上的选项可能会略有不同。)

答案 3 :(得分:1)

同一报告中有多个数据集,并且可能。

第1步 使用不同的服务器/数据库/表名称创建尽可能多的数据源 例如: 数据源1 =服务器1 /数据库1 /表1 DataSource2 = server2 / Database2 / table2

第2步 使用

创建尽可能多的数据集

第3步 在同一“报告”窗口中->右键单击并选择“插入”-“表”

将桌子放在您想要的任何地方 转到表的属性-将所需的DataSetName设置为Datasource。 DatasetName = Datasource2

确保数据集可以正常使用,并在报表数据的左侧显示字段

保存并运行报告。

玩得开心...!