SSIS - 将脚本组件输出 IsSorted 属性设置为 true

问题描述 投票:0回答:4

我有 2 个 excel 源数据流,在 excel 源上,我将 IsSorted 属性设置为 true,并将其中一列的 SortKeyPosition 设置为 1,每个流进入同步脚本组件,然后为某些列分配值两个输出都进入合并连接任务。

合并组件抱怨是因为输入未排序,当我查看脚本组件输出的元数据时,我可以看到该列的 sortKeyPosition 设置为 1,所以我认为它可能是该列的 IsSorted 属性输出在脚本任务中被重置,有没有办法将其设置为 true?

我尝试了高级编辑器,但没有成功。

sql-server sorting ssis
4个回答
3
投票

您的数据实际上必须经过物理排序才能进行合并,仅设置 is排序属性实际上并不对数据进行排序,它只是向下游组件提供数据已排序的提示。

您可以通过在两个组件之间放置排序运算符来解决此问题,这将确保数据实际上已正确排序。 请查看以下内容以了解更多详细信息:

对合并和合并连接转换的数据进行排序


2
投票

这可能有帮助 http://liguoliang.com/2012/ssis-set-issorted-property-for-the-source-of-mergejoin/

两个来源必须按同一列排序。 - 右键单击源 - 转到高级编辑器 - 将源 IsSorted 属性设置为 True - 将列排序位置设置为 1,然后是 2,然后是 3 ...


0
投票

我能够找出问题,SortKeyPosition 设置为 1 的列被添加为脚本组件的读/写列,当我从脚本组件的输入列中删除它时,合并连接组件识别出按排序输入!


0
投票

我同意@steoleary。 “ISSorted”属性并不真正对数据进行排序。您应该使用排序组件。 我遇到了同样的问题,并且收到了空值。当我使用排序组件而不是数据源的“IsSorted”属性时,我的数据返回了正确的值。

© www.soinside.com 2019 - 2024. All rights reserved.