Visual studio ssis中的排序需要很多时间,如果我在OLEDB命令条件下进行排序,则拆分不起作用

Visual studio ssis中的排序需要很多时间,如果我在OLEDB命令条件下进行排序,则拆分不起作用,visual-studio,business-intelligence,ssis,Visual Studio,Business Intelligence,Ssis,这是我的问题 我使用2个源代码 first query (select * from servera.databasea.tablea) secund query(select id, modifiedon from serverb.databaseb.tableb) sort first query, sort second query merge join at left join condition split is.. isnull(idtableb) then i do ins

这是我的问题

我使用2个源代码

first query (select * from servera.databasea.tablea)
secund query(select id, modifiedon from serverb.databaseb.tableb)
sort first query, sort second query
    merge join at left join
condition split is.. isnull(idtableb) then i do insert (insert ont serverb)
               !isnull(idtableb) && modifiedontableb<modifiedontablea then update(on server b)
它可以处理一些行,但我处理的行数超过50000行,排序需要2个多小时,结果出错

我的另一种方法是

在“显示高级编辑器”上单击鼠标右键,然后单击“在oledbsource上排序” 我选择的ole db源输出的输入和输出属性issorted已更改为true

在id为的输出列上,我更改为 将sortkeyposition设置为1 我什么也没告诉唐 所以我为2个oledbsource执行了这些步骤 用于服务器1和服务器2的oledb

它的工作速度要快得多它在5分钟内完成并且总是插入 条件拆分现在不起作用:s因为总是要插入 因此,我在条件split中添加了parse DT_DBDATE,并且它仍然是唯一相等的插入 在我确定了mofidiedon解析DT_日期之后,就再也不会更新了,它仍然是相等的。那么我的问题是
我不想使用排序我如何才能做条件拆分工作

排序步骤需要很长时间,因为排序操作的内存不足。这意味着它将开始在磁盘上进行排序,速度非常慢。选项是使用一些第三方排序组件,如

否则,您可以执行以下操作:

为了使合并工作,需要在查询中和使用SortKeyPosition对输入进行排序。此外,它们还需要进行相同的排序

你的问题应该是:

SELECT * FROM servera.databasea.tablea ORDER BY id, modifiedon

SELECT id, modifiedon FROM serverb.databaseb.tableb ORDER BY id, modifiedon
现在将IsSorted设置为TRUE,将SortKeyPosition 1设置为id

在合并步骤中,使用id作为联接键

现在,在条件拆分中,可以使用两种输出情况


请注意,如果每个id有多行,则需要更多的内容进行排序/连接,以便不会以错误的顺序获取内容。

排序步骤需要很长时间,因为排序操作的内存不足。这意味着它将开始在磁盘上进行排序,速度非常慢。选项是使用一些第三方排序组件,如

否则,您可以执行以下操作:

为了使合并工作,需要在查询中和使用SortKeyPosition对输入进行排序。此外,它们还需要进行相同的排序

你的问题应该是:

SELECT * FROM servera.databasea.tablea ORDER BY id, modifiedon

SELECT id, modifiedon FROM serverb.databaseb.tableb ORDER BY id, modifiedon
现在将IsSorted设置为TRUE,将SortKeyPosition 1设置为id

在合并步骤中,使用id作为联接键

现在,在条件拆分中,可以使用两种输出情况


请注意,如果每个id有多行,则需要更多的内容进行排序/合并,以便不会以错误的顺序获取内容。

我不知道您的要求是什么?排序需要花费很多时间,然后直接在oledbsource now上进行排序条件拆分并不总是适用于inserts now 1。-排序必须更快,但为什么?ór 2.-如果排序直接在oledbsource上,那么条件拆分如何工作?它总是插入永不更新。这是您不能对ServerB使用查找的原因吗?即使对于该服务器上的大型数据集,您的查询也会消耗多少,每行12字节?您的第二个条件拆分案例可以简化为修改的日期检查。我不知道您在问什么?排序需要很多时间,然后直接在oledbsource now上执行排序。条件拆分不总是可以立即插入1。-排序必须更快,但为什么?ór 2.-如果排序直接在oledbsource上,那么条件拆分如何工作?它总是插入永不更新。这是您不能对ServerB使用查找的原因吗?即使对于该服务器上的大型数据集,您的查询也会消耗多少,每行12字节?您的第二个条件拆分案例可以简化为修改的日期检查我要将sortkeyposition 1设置为id,但modifiedon?是2点吗?或者它不会什么都没有?据我所知,我前面没有测试环境。合并任务使用排序键作为连接键。如果您不想加入modifiedon,您可能不应该按它排序ssis。通常在ole db源代码中,它是否按它排序并不重要。我要将sortkeyposition 1设置为id,但modifiedon?是2点吗?或者它不会什么都没有?据我所知,我前面没有测试环境。合并任务使用排序键作为连接键。如果您不想加入modifiedon,您可能不应该按它排序ssis。通常在ole db源代码中,它是否按它排序并不重要。