【问题标题】:Find out Total Number of Rows affected by SQL Command Variable in Data Flow Task找出数据流任务中受 SQL 命令变量影响的总行数
【发布时间】:2016-07-26 20:13:45
【问题描述】:

我有 来自变量的 SQL 命令(通常是 Select 语句) 作为 DataFlow 任务的源。 目标是 .csv 文件

问题:即使没有行受 SQL 命令影响,生成的变量 .csv 文件也没有记录。如果 select 语句(来自 SQL 命令变量)没有填充记录,我不想生成文件。

请给我建议。

【问题讨论】:

    标签: csv ssis ssis-2012


    【解决方案1】:

    简单的程序: 您可以在导出前使用执行 SQL 任务计算行数,如果行数大于 0,则继续导出;
    以下是一个可能的解决方案:

    • 使用类似 SELEC COUNT(*) AS MYCOUNT FROM...的查询
    • 使用包变量(myVariable 与 MYCOUNT 关联)来包含行数
    • 在 SQL 任务编辑器中设置结果集 = 单行
    • 在 SQL 任务编辑器的选项卡结果集中映射变量 (MYCOUNT - myVariable)
    • 使用Execute SQL Task中的两个箭头在每个箭头中选择Evaluation operation: Expression, Expression: myVariable > 0(第一个箭头)和myVariable == 0(第二个箭头),选择Logical OR,这样你就有了分叉!
    • 使用 myVariable > 0 将导出连接到箭头
    • 将另一个箭头连接到另一个可能的任务,例如它可以通过电子邮件警告您没有行

    对于行计数也可以使用任务:Row Count(存在于最新的 SSIS 版本中);行计数转换会在行通过数据流时对其进行计数,并将最终计数存储在变量中。

    希望对你有帮助

    【讨论】:

    • 谢谢亚历克斯。但我有一个差异。设想。有一个带有 Foreach From Variable Enumerator 的 foreach 循环容器。基于该变量脚本任务创建 sqlCommand 查询,该查询作为 SQLcommad 从变量传递到数据流任务源。是的,我使用了行计数功能,但最终它会转到数据流任务目标并创建一个 .csv 文件。
    • 也谢谢你,为什么不也动态创建查询计数行(在变量内),然后在数据流任务之前放置行数的验证(执行 SQL 任务并从变量查询) ?这样你仍然在循环中..
    • 是的,Alex 这是一个解决方案。是否有其他方法可以让我们知道没有记录受 Dataflow 任务源(来自变量的 SQLCommand)影响并转移到不生成输出文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 2016-08-29
    • 2020-05-05
    • 2010-10-26
    • 2016-08-10
    • 2020-06-14
    相关资源
    最近更新 更多