SSIS数据流更改记录的顺序

时间:2009-05-13 20:59:47

标签: sql-server-2005 ssis dbf shape

我以为我在SQL order by and left outer join doesn't have correct order中问了一个类似的问题,但这有点不同。我使用SSIS和标准数据流从另一个SQL-Server 2005数据库获取数据。我得到的记录与源表中的顺序不同(实际上它是一个视图)。在较旧的DTS中,订单不会改变。

源表或目标表或视图上没有排序,通常,我认为如果订单很重要,那么它将被指定。我可能必须让某人指定一个订单,我们可以继续使用它,但我们正在处理历史形状文件,如果属性的顺序发生变化,那么形状指向错误的数据。

数据在导入时是否更改了顺序?有解决办法吗?

以下是订单重要的原因。它适用于地图应用程序,属性和形状必须匹配。如果订单更改,则项目将无法正确匹配。不幸的是,我无法识别数据的任何顺序,我怀疑前一个编码器采用了一致的顺序,这就是重要的。使用SSIS的订单不是相同的订单,并且从未明确设置。

1 个答案:

答案 0 :(得分:4)

如果没有明确的SELECT子句,则无法保证SQL Server ORDER BY语句返回的记录顺序。您很幸运,DTS选择的数据集按您所需的顺序返回行。

如果源是一个视图,这是双重的,因为正如你所说,视图没有隐含的顺序。即使添加TOP 100 PERCENT ... ORDER BY也不能保证实际返回结果集的顺序(请参阅books online条目顶部的注释)。

唯一的解决方法是在数据流中为查询添加ORDER BY子句。

从您的问题来看,您是否在视图中有一组列保证返回您需要的顺序并不完全清楚 - 如果是这样,请更新有关源数据的更多详细信息的问题,因为有几种解决问题的方法。