Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSIS:需要在数据的其他SQL查询中使用SQL查询结果_Sql_Sql Server_Ssis - Fatal编程技术网

SSIS:需要在数据的其他SQL查询中使用SQL查询结果

SSIS:需要在数据的其他SQL查询中使用SQL查询结果,sql,sql-server,ssis,Sql,Sql Server,Ssis,我正在尝试创建一个SSIS包,用于将数据子集引入一个单独的报告环境(基本上是从一个数据集市引入另一个数据集市) 我需要从多个表中获取数据,但有一个初始源表用于筛选属于我的组的记录 我试图弄清楚如何将第一个查询的结果作为后续查询的一部分使用。我的第一个查询只返回一列(LookupID值),但它将有多行 我的目标是使用LookupID值创建多个数据ODB源/目标包(每个表一个),以便为我获取相关记录。但我似乎找不到一种方法来实现这一点 我的退路只是获取所有新记录,然后在我的暂存表中删除,但我希望有另

我正在尝试创建一个SSIS包,用于将数据子集引入一个单独的报告环境(基本上是从一个数据集市引入另一个数据集市)

我需要从多个表中获取数据,但有一个初始源表用于筛选属于我的组的记录

我试图弄清楚如何将第一个查询的结果作为后续查询的一部分使用。我的第一个查询只返回一列(LookupID值),但它将有多行

我的目标是使用LookupID值创建多个数据ODB源/目标包(每个表一个),以便为我获取相关记录。但我似乎找不到一种方法来实现这一点


我的退路只是获取所有新记录,然后在我的暂存表中删除,但我希望有另一种/更好的方法。

有几种方法可以实现

暴力

在数据流任务(DFT)中,您可以在
查找转换中重复初始查询。查找支持多列结果集。将数据从源流向查找,然后在
选项卡上选择输出

适度优雅

如果将初始查询捕获为数据库中的
视图
,则可以再次将该视图用作
查找转换的源。这样,如果基础查询需要更改,您只有一个地方可以维护它

我可能开始的方式

查找的问题是它们会消耗内存。如果您的查找源代码只有几百行,甚至几千行,那么这并不是一个真正的问题。但是,如果你有超过,比如说,300-500万条记录,它会开始真正影响你的应用服务器,并使内存紧张


考虑到这一点,我再次倾向于在视图中捕获逻辑,但随后在ODBC源查询中加入视图。这就把繁重的工作转移回了SQL Server box上,而SQL Server box正是为了完成这类工作而设计的,而SSI则负责处理数据传输,它在处理数据传输方面非常出色。

您需要将第一次查找的结果存储到一个对象变量中,然后在以后的步骤中解析它。最有可能的方法是将数据放入一个对象变量(执行sql任务),然后为每个后续表的每个循环容器“查找”该对象变量的值。这是我在描述的唯一一个高层次的内容,而没有真正深入了解您的数据的细节


如果您有大量数据,那么我可能会坚持Eric的最后一种方法。

如果您可以在联接中使用源表,这将是理想的方法。您可以在单个查询中为加入初始源?的每个源创建多个视图是。但是,我必须将其作为SSI中的一个非常大的数据集返回,然后可能将其从一个ODB源拆分到多个ODB目标,并将数据拆分到它应该转到的每个表中。我还担心将所有表合并到一个查询中会有很好的效果。我也无法在源服务器上创建自定义视图。暴力:是否需要对我要检查的每个表都这样做?我将对此进行研究,尽管听起来好像是在推送数据,然后在SSIS中进行比较?也许我理解错了,今天晚些时候我可以试着看看查找转换。稍微优雅一点/开始方式:不幸的是,这是整个公司使用的一个非常大的中央数据集市,我没有权限添加/修改它(即:创建视图),这是我将数据复制到另一台我有更多控制权的服务器的部分原因。是的,必须对每个表执行暴力方式。乏味的您可以提取第一个查询并使用它填充目标数据库中的表,然后将该表用作所有查找的基础。SSIS的优势之一是它能够跨服务器工作(通过将所有数据拉到应用服务器上,但完全相同…),我正在寻找更多的方法来利用查询中的初始记录集/对象。循环太慢和乏味。即使是那天的一个小数据集,将所有数据拉到其他SQL server并在我设置的暂存架构中清理那里的记录仍然会更有效。我希望有一种方法可以在其他部分中使用第一个对象/记录集作为查询的一部分。当我努力用谷歌搜索它时,我有点假设这可能是不可能的,但我想检查一下以防万一。