如何确定行集的最后一行以便在数据流中进一步处理?

时间:2014-08-19 16:14:29

标签: sql sql-server ssis script-component

我对SSIS 2014数据流有疑问。我需要在数据流期间确定行集的最后一行。我需要它在同一数据流中进行进一步处理。 使用脚本组件,我尝试了函数NextRow()和EndOfRowset()。但是,使用以下代码,这些函数无法正常工作:

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    if (!Row.NextRow()) // never true.
    {
        MessageBox.Show("last row");
    }

    if (Row.EndOfRowset()) // never true.
    {
        MessageBox.Show("last row");
    }
}

原因是一些缓冲区大小问题,您可以在此处阅读:http://social.msdn.microsoft.com/Forums/sqlserver/en-US/b07c5324-56ff-48dc-991c-3947aecf1558/endofrowset-doesnt-work?forum=sqlintegrationservices

所以我尝试测量行数,以便确定最后一行。不幸的是,行计数转换在处理完所有行时将确定的行计数分配给变量。所以我无法在数据流中使用它。

如何确定数据流中的最后一行,以便我可以单独处理此行?

1 个答案:

答案 0 :(得分:2)

您希望在Input0_ProcessInput方法中执行此操作。尝试在脚本组件中测试此代码:

public override void Input0_ProcessInput(Input0Buffer Row)
    {
        base.Input0_ProcessInput(Row);

        //Will be true this time
        if (Row.EndOfRowset())
        {
            MessageBox.Show("Last Row");
        }
    }