在OLE DB命令(SSIS)之后捕获受影响的行计数

时间:2013-09-25 14:18:05

标签: ssis

我在数据流中有一个OLE DB命令,它根据查找任务的结果删除记录。我想得到删除的记录数。我在OLE DB命令之后设置了一个RowCount任务,但我收到的结果是与查找匹配的记录数,而不是与删除语句(OLE DB命令)中的条件匹配的记录数。

任何帮助都将不胜感激。

-Craig

2 个答案:

答案 0 :(得分:1)

  1. 为数据流中的行计数创建一个空占位符列。您可以将其添加为派生列或源查询。我们称之为 rowsDeleted
  2. 创建存储过程以处理删除。我为化妆台创建了一个简化版本:

    创建过程deleteTT @id int,@ rowc int OUTPUT 如 开始 从dbo.tt中删除a = @id; SELECT @rowcount = @@ ROWCOUNT; 端

  3. 将OLE DB命令的SqlCommand设置为以下内容: exec deleteTT?,?输出

  4. 在Column Mappings选项卡中,将查找中的id列映射到@id参数,并将rowsDeleted映射到@rowcount OUTPUT参数。

  5. 现在,rowsDeleted是该行数据流的一部分,您可以随意使用它。

答案 1 :(得分:0)

您可能需要尝试让Command对象发出已删除内容的计数,然后将聚合连接到它以汇总所有这些值。

我从来没有取得太多成功从Command组件输出,所以我作弊并在前面的查找中计算聚合并将该值添加到流中或只是使用脚本组件来触发删除语句和捕获@@rowcount值并将其推送到数据流中。