如何在 s-s-rS 中组合多个结果集?
Posted
技术标签:
【中文标题】如何在 s-s-rS 中组合多个结果集?【英文标题】:How do you combine multiple result sets in s-s-rS? 【发布时间】:2010-09-07 07:28:34 【问题描述】:在 s-s-rS 中组合来自不同数据源的结果集的最佳方法是什么?
在我的特定示例中,我需要编写一个报告,从 SQL Server 中提取数据并将其与来自 DB2 数据库的另一组数据相结合。最后,我需要将这些单独的数据集连接在一起,这样我就有了一个组合数据集,其中来自两个源的数据组合到同一行。 (如果两个表都来自同一个 SQL DB,则类似于内部连接)。我知道您不能在 s-s-rS 2005 中“开箱即用”地执行此操作。对于必须将数据拉入我的 SQL 框上的临时表中,我并不感到兴奋,因为用户需要能够按需运行此报告并且似乎必须使用 SSIS 将数据按需放入表中,这将是缓慢且难以管理的,因为多个用户试图同时获取报告。还有其他更优雅的解决方案吗?
我知道下面提到的链接服务器解决方案在技术上是可行的,但是,出于某种原因,我们的 DBA 根本不允许我们使用链接服务器。
我知道您可以将两个不同的数据集添加到报告中,但是,我需要能够将它们连接在一起。有人对如何最好地实现这一点有任何想法吗?
【问题讨论】:
【参考方案1】:我们必须做一些类似的事情(即内连接来自不同服务器的 2 个数据源)。我相信最好的方法是编写自己的自定义数据扩展。这不是很困难,它会让你有能力做到这一点,甚至更多。
【讨论】:
关于如何开始使用自定义数据扩展的任何建议? 我遇到了这篇 CodeProject 文章,该文章描述了如何创建 s-s-rS 多数据源数据处理扩展:codeproject.com/KB/reporting-services/…【参考方案2】:您可以将 DB2 数据库添加为 sql server 中的链接服务器,然后在 sql 中的 view/sproc 中加入这两个表。我已经做到了,这并不难,您将实时获取数据。
【讨论】:
【参考方案3】:您可以创建一个可以直接访问数据库的链接服务器,或者如果您不想在工作时间内对数据库造成压力,您可以创建一个作业来复制您需要的数据过夜。
【讨论】:
【参考方案4】:s-s-rS 2005 允许您为一个报表创建多个数据集。每个数据集可以引用不同的数据源,一个可以来自 SQL DB,另一个可以是 ODBC 源等。
在 Visual Studio 的报表设计器视图中,转到“数据”选项卡并添加指向不同数据库的新数据源。完成后,在为每个元素设计报表时,您必须明确指定数据来自哪个数据集。
如果上述方法不起作用,您可以编写托管代码,请参阅http://msdn.microsoft.com/en-us/msdntv/cc540036.aspx 以获取更多有用信息和视频。
【讨论】:
在 s-s-rS 中确实可以有多个数据集,但问题是关于在报告中将这些数据集聚合为一个。【参考方案5】:您可以将 MSSQL 表和 DB2 表都附加到 Jet 数据库,并将您的报告绑定到 Jet 数据库。我不知道 Jet 的单线程特性的含义,也不知道有多少工作会委派给后备存储。
【讨论】:
以上是关于如何在 s-s-rS 中组合多个结果集?的主要内容,如果未能解决你的问题,请参考以下文章