如何在SSRS中合并多个结果集?
在SSRS中合并来自不同数据源的结果集的最佳方法是什么?
在我的特定示例中,我需要编写一个报告,该报告从SQL Server中提取数据,并将其与来自DB2数据库的另一组数据进行组合。最后,我需要将这些单独的数据集连接在一起,这样我就得到了一个合并的数据集,其中两个来源的数据都合并到同一行。 (就像内部联接一样,如果两个表都来自同一个SQL DB)。我知道我们无法在SSRS 2005中"开箱即用"执行此操作。对于将数据拉入SQL框上的临时表中,我并不感到兴奋,因为用户需要能够按需运行此报告似乎必须使用SSIS将数据按需存储到表中会很慢,并且难以管理,因为多个用户试图同时获取报表。还有其他更优雅的解决方案吗?
我知道以下提到的链接服务器解决方案在技术上会起作用,但是由于某种原因,我们的DBA根本不允许我们使用链接服务器。
我知道我们可以将两个不同的数据集添加到报表中,但是,我需要能够将它们结合在一起。有人对如何最好地做到这一点有任何想法吗?
解决方案
回答
SSRS 2005允许我们具有一个报表的多个数据集。每个数据集可以引用不同的数据源,一个可以来自SQL DB,另一个可以是ODBC源,等等。
在Visual Studio的报表设计器视图中,转到"数据"选项卡,并添加指向不同数据库的新数据源。完成后,在为每个元素设计报告时,必须明确指定数据来自哪个数据集。
如果上述方法不起作用,则可以编写托管代码,有关更多有用的信息和视频,请参阅http://msdn.microsoft.com/zh-cn/msdntv/cc540036.aspx。
回答
我们可以将DB2数据库添加为sql server中的链接服务器,而只需将两个表联接到sql中的view / sproc中。我已经做到了,这并不难,我们将实时获取数据。
回答
我们可以将MSSQL表和DB2表都添加到Jet数据库,然后将报表绑定到Jet数据库。我不知道Jet的单线程性质的含义,也不知道将有多少工作委派给后备存储。
回答
我们必须做类似的事情(即来自不同服务器的内部联接2数据源)。我相信最好的方法是编写自己的自定义数据扩展。这不是很困难,它将使我们能够执行此操作以及执行更多操作。
回答
我们可以创建一个链接服务器,该服务器可以直接访问数据库,或者如果我们不想在工作时间内紧张数据库,则可以创建一个作业来在一夜之间复制所需的数据。