【问题标题】:SSIS 2008 Row Count Transformation - Row count return 0SSIS 2008 行计数转换 - 行计数返回 0
【发布时间】:2011-03-10 06:48:00
【问题描述】:

这应该很简单,但我不知道为什么我在数据流任务中使用 ROW COUNT 转换时将 Row Count 设为零。我创建了一个具有包范围的变量(NoOfRecords)。

变量名称在行计数转换中设置为变量 NoOfRecords。

使用 Derived 列分配行数。

包运行成功,显示记录数为 265

但 Derived 列将记录计数显示为 0 而不是 265 行。

【问题讨论】:

    标签: sql sql-server-2008 ssis


    【解决方案1】:

    在行计数之后,在聚合任务属性的操作选项卡中添加聚合任务并选择计数选项。 然后,您可以使用行计数变量进行进一步操作,它保存输入文件的总行数。

    【讨论】:

    • 我遇到了同样的问题。事实上,聚合任务适用于此。使用聚合任务,您甚至不需要行数或任何用户自定义变量。
    【解决方案2】:

    行计数在行已过去后处理。

    您正在将变量添加到通过派生列步骤的每一行,但此时,变量尚未更新(因为它发生在所有行都通过之后) - 所以值 0 是正确的。

    您-也许-可以通过在派生之前使用异步任务来实现这一点(但我不确定这是否可行,它只是突然出现在我的脑海中)。在派生之前添加排序或聚合步骤,然后重试。

    【讨论】:

    • 实际上,想想看,只需使用 COUNT() 使您的 OLE DB 源中可用的行数 - 这样您甚至不必担心数据流。跨度>
    • 好的。我不需要派生列...我可以将计数写入平面文件目标...它会给我正确的行数吗?
    • 您不能以这种方式将变量映射到列,不。
    【解决方案3】:

    我在查询中使用它作为获取行数的有效方法:

    count(all SnapshotDate) over () as nRowCount

    【讨论】:

      【解决方案4】:

      这是在我的情况下有效的记录行的成功技术。 场景是我想记录表之间迁移的行。在您退出 DataFlow 之前,不会填充 RowCount。 [控制流] 1.数据流任务 一种。读取原始数据 - 源代码控制 湾。添加 RowCount 转换。将 a 链接到 b。 右键单击 RowCount 并映射到 UserVariable (int64) C。添加用于加载表的目标控件。 d。将 b 链接到 c。 2. 将执行 SQL 任务添加到 ControlFlow。右键,编辑 INSERT SQL 语句:插入到 LogTable(rowcount) 值(?) 参数映射 可变方向 DataType ParameterName ParameterSize User::RowCount INPUT LONG 0 -1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-23
        • 2020-12-06
        • 2014-05-19
        • 1970-01-01
        • 2023-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多