SSIS:按列排序完整结果集以执行 SQL 任务
SSIS: Order by Column Full Result Set for Execute SQL Task
我在 Foreach 循环容器之前放置了一个执行 SQL 任务,这样对于完整结果集返回的每一行,脚本任务都会将其插入 Excel 行。
但是,在一个特定的列上,我想在遍历每一行之前按 ASC 顺序对完整结果集进行排序,以便我可以按特定顺序获得完整结果集。
我尝试在执行 SQL 任务中的 SQL 脚本中使用 Order By 子句,但它没有按预期排序。
有没有一种方法可以在传递到另一个进程(即脚本任务)之前按单列对结果集对象中的查询结果进行排序?
您似乎已经了解到,您 cannot use ORDER BY in an Execute SQL task. Instead, use a Sort task 可以在从执行 SQL 任务加载数据后对其进行排序。
使用排序转换编辑器,除了确定 "pass-through" 列或将它们从数据流中删除之外,您还可以选择对哪些列进行排序以及查看它们的方式。
此图像使用 OLE DB 源,但如果使用执行 SQL 任务,排序任务的实际效果是相同的
这确实提出了一个问题:为什么使用执行 SQL 任务? OLE DB 源使用起来会更容易、更灵活。尽可能考虑重写 SSIS 包以使用 OLE DB 数据源。
我在 Foreach 循环容器之前放置了一个执行 SQL 任务,这样对于完整结果集返回的每一行,脚本任务都会将其插入 Excel 行。
但是,在一个特定的列上,我想在遍历每一行之前按 ASC 顺序对完整结果集进行排序,以便我可以按特定顺序获得完整结果集。
我尝试在执行 SQL 任务中的 SQL 脚本中使用 Order By 子句,但它没有按预期排序。
有没有一种方法可以在传递到另一个进程(即脚本任务)之前按单列对结果集对象中的查询结果进行排序?
您似乎已经了解到,您 cannot use ORDER BY in an Execute SQL task. Instead, use a Sort task 可以在从执行 SQL 任务加载数据后对其进行排序。
使用排序转换编辑器,除了确定 "pass-through" 列或将它们从数据流中删除之外,您还可以选择对哪些列进行排序以及查看它们的方式。
此图像使用 OLE DB 源,但如果使用执行 SQL 任务,排序任务的实际效果是相同的
这确实提出了一个问题:为什么使用执行 SQL 任务? OLE DB 源使用起来会更容易、更灵活。尽可能考虑重写 SSIS 包以使用 OLE DB 数据源。