代码之家  ›  专栏  ›  技术社区  ›  pramodtech

ssis文件存在,不检查脚本任务

  •  3
  • pramodtech  · 技术社区  · 15 年前

    是否有任何方法可以检查没有脚本任务的文件是否存在?可能是foreach循环容器或其他。

    3 回复  |  直到 6 年前
        1
  •  2
  •   Gordon Bell    8 年前

    我了解了如何在不使用脚本任务的情况下检查文件。

    1) Add a ForEach Loop Container to your Control Flow.
    2) On ForEach Collection pane, set Enumerator to "Foreach File Enumerator"
    3) Set Folder to your Source Folder.
    4) Set Files to your File Spec (*.*).
    5) On Variable Mappings, create new variable "User::FileExistsFileName"
    6) You then just need to configure two output Lines for the ForEach Loop:
    
    7) For Success Line:  Double-click the Connector Line, set:
    
    Evaluation operation:  Expression
    Value:  Success
    Expression:  @[User::FileExistsFileName] != ""
    
    8) For Failure Line, set:
    
    Evaluation operation:  Expression or Constraint
    Value:  Failure
    Expression:  @[User::FileExistsFileName] == ""
    

    我喜欢将评估操作设置为“表达式或约束”失败,只需将该行变为红色。

        2
  •  0
  •   Todd McDermid    15 年前

    如果可以使用自定义组件,请尝试以下操作: File Properties Task . 它是开放源码的,所以你可以确切地看到它在做什么。您需要在您的开发人员和产品盒上安装它-使用安装程序或手动安装到GAC中。但是这样做,你有一个拖放任务比文件系统任务更容易使用…但是,我有偏见…

        3
  •  0
  •   Felix Bayer    6 年前

    我只是在寻找同样的东西,并认为我会分享我最终提出的解决方案,以防任何人仍然感兴趣:

    我只是使用了一个执行过程任务来运行一个简单的“如果不存在”命令,处理包中的退出代码。

    相关任务配置:

    Executable: C:\windows\system32\cmd.exe
    FailTaskIfReturnCodeIsNotSuccessValue:
    Expressions > Arguments: “/C如果不存在\”“”“+@[用户::路径\到\文件]+”“\”(退出1)其他(退出0)”
    WindowStyle: 隐藏的
    MaximumErrorCount: 一个等于或大于它可能失败的数字(例如,在循环中检查文件是否存在时)

    添加一个 OnError EventHandler 执行进程任务并设置系统变量 Propagate False 以阻止它向父容器冒泡失败。 如果你不想为 MaximumErrorCount 如果任务失败,您可以简单地“回送”结果并将stdout传递给一个变量,然后您可以在表达式中进行检查。