平面文件源错误SSIS中的输出连接

Pra*_*eek 3 ssis

我在SSIS中有一个平面文件源连接.我已经为错误输出创建了一个平面文件目标连接.我用红色箭头连接了它.问题是即使平面文件源中没有错误,也会创建错误输出文件.即使没有错误,"错误平面文件目标"也始终变为绿色.如何解决它.提前致谢

小智 13

可能你已经找到了解决方案.我希望这可能有助于寻找解决此问题的人.

SSIS中没有可用的内置数据流任务设置来执行此操作.您可以Row Count在数据流任务内部使用转换结合File System Task控制流来实现此目的.

以下是如何执行此操作的分步过程.在这个例子中,我使用了一个名为Country_State.csv包含国家和州的csv文件作为源文件.

场景:

示例包将读取该文件,然后写入名为的文本文件Destination.txt.在这种情况下,Error.txt将创建错误文件,但如果没有错误,则稍后将删除.在这里,我将文件存储在路径中c:\temp\

分步流程:

  1. 在连接管理器部分,创建三个平面文件连接,即Source,DestinationError.请参阅截图#1.
  2. Source连接应指向csv文件路径c:\temp\Country_State.csv.请参阅屏幕截图#2以获取此文件的内容.
  3. Destination连接应指向名为的文本文件c:\temp\Destination.txt.
  4. Error连接应指向名为的文本文件c:\temp\Error.txt.
  5. 创建一个名为Int32的数据类型的变量ErrorCount.
  6. 在"控制流"选项卡上,放置一个Data Flow Task然后放置一个File System Task.
  7. 将数据流任务连接到文件系统任务.
  8. 右键单击"数据流任务"和"文件系统任务"之间的连接器.
  9. 优先约束编辑器,改变评价操作Expression和值粘贴@ErrorCount == 0表达文本框.
  10. 您的控制流程应如屏幕截图#3所示.
  11. 在数据流选项卡上的数据流任务内,拖放平面文件源并将其配置为使用Source连接管理器.
  12. 放置一个平面文件目标并将其配置为使用Destination连接管理器.
  13. 绿色输出箭头从平面文件源连接到平面文件目标.
  14. Row Count在数据流选项卡上放置转换并将其配置为使用变量User:ErrorCount.
  15. 将平面文件源中的红色输出箭头连接到行计数转换.
  16. 放置一个平面文件目标并将其配置为使用Error连接管理器.
  17. 使用连接将行计数的输出连接到平面文件目标Error.
  18. 您的数据流任务应如屏幕截图#4所示.
  19. 在"控制流"选项卡上,双击"文件系统任务".
  20. 在文件系统任务编辑器,设置操作Delete file并设置SourceConnectionError.参见截图#5.
  21. C:\temp包执行之前的文件夹路径的内容显示在屏幕截图#6中.
  22. 数据流选项卡执行显示在屏幕截图#7中.
  23. 控制流程执行显示在屏幕截图#8中.
  24. C:\temp包执行后文件夹路径的内容显示在屏幕截图#9中.
  25. 为了显示这实际上有效,我将Source连接管理器上的第二列更改为整数(即​​使状态名称是字符串),以便数据流任务重定向到Error输出.
  26. 场景2数据流选项卡执行显示在屏幕截图#10中.
  27. 场景2控制流程执行显示在屏幕截图#11中.请注意,文件系统任务未执行,因为错误文件不为空.
  28. C:\temp方案2包执行后的文件夹路径的内容显示在屏幕截图#12中.请注意,即使没有成功的行,也存在Destination.txt文件.这是因为该示例仅删除Error文件(如果为空).

类似的逻辑可用于删除空的目标文件.

希望有所帮助.

截图#1:

1

截图#2:

2

截图#3:

3

截图#4:

4

截图#5:

五

截图#6:

6

截图#7:

7

截图#8:

8

截图#9:

9

截图#10:

10

截图#11:

11

截图#12:

12