2

我在 SSIS 包中遇到流问题。为了提高性能,我通常采用相同的逻辑将数据从 MS Access 文件导入 SQL Server 数据库:

  • 第一个任务 - 尝试批量插入数据(表或视图 - 快速加载)
  • 如果出现故障(例如违反约束),则将整组记录传递给下一个任务 - 正常插入(表视图)
  • 所有问题记录都传递到下一步以登录到平面文件 (txt)

我面临的问题是,即使第一次插入顺利,我仍然会到达失败流程,并且一直创建一个空的错误日志文件。据我了解,只有在之前出现问题的情况下,该过程才应该达到这一点。

为了更好地理解,我附上了执行结果的图像,最后有绿色的勾号。

对于解决方法的任何建议将不胜感激。我需要的是创建错误日志文件 - 仅当出现有关问题的详细信息的任何错误时。

谢谢!

SSIS 包中的错误流

4

1 回答 1

0

我认为您可能在某种程度上将数据流与控制流混淆了。

StockExchange - 将创建错误日志,因为它可能会从数据流中接收记录。

解决这个问题的方法可能是:

1) 创建一个临时错误日志文件来临时保存失败的行,如果在临时位置成功,则为零行。

2)在“StockExchange - Get Error Desc”组件之后添加一个rowcount组件并分配给一个变量,例如iErrorCount

3)在您的控制流中,在数据流之后添加两个优先约束。一个@iErrorCount > 0,一个@iErrorCount ==0。如果它为零,则添加文件系统任务以删除临时日志文件(它有零行)

4) 对于@ErrorCount > 0 路径,您添加一个文件系统任务以将临时日志文件复制到您需要的位置,并使用有效名称。并添加一个文件系统任务来删除临时日志文件。

于 2013-08-09T10:43:02.943 回答