【发布时间】:2014-08-19 16:14:28
【问题描述】:
我对 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
所以我尝试测量行数,以便确定最后一行。不幸的是,行计数转换在处理所有行时将确定的行计数分配给变量。所以我不能在数据流期间使用它。
如何确定数据流期间的最后一行,以便单独处理这一行?
【问题讨论】:
-
您能否在数据流之前确定它,或者通过在查询输出中包含“isLast”列,或者在 executeSQL 任务中执行 COUNT 查询?
-
您好 Tab Alleman,由于我没有找到关于如何确定数据流期间的最后一行的解决方案,因此我在之前的数据流中使用行计数转换来完成此操作。这也适合解决我的问题。感谢您的帮助!
标签: sql sql-server ssis script-component