How to fix SSIS “File/Process not in path” warning

2019-07-19 02:28发布

问题:

SSIS comes with many tasks that solve data acquisition and intrgration problems, but one task that it lacks is 'HTTP Task' for downloading files over HTTP.

To work around this, I installed Wget, and run it from SSIS using the Execute Package task.

Wget is on my system path so that I can type 'wget' from the command prompt while working in any directory to run the program. But SSIS complains that "File/process 'wget' is not on the path":

I have set the process property RerquireFullFileName to False to stop this complaint from causing an error:

Apart from issuing a warning at the start, the package runs as expected. It invokes wget and downloads the file I tell it to. But how do I stop SSIS complaining that wget is not on the path?

EDIT: Setting the Execute Process task's DelayValidation property to True, as suggested by Siva, does not solve the problem; it just stops SSIS from complaining at design time. With delayed validation, at runtime, I see this in the debug output window:

SSIS package "Extract.dtsx" starting.
Warning: 0xC0029154 at Download Locations Dump, Execute Process Task: File/Process "wget" is not in path.
SSIS package "Extract.dtsx" finished: Success.

回答1:

The warning occurs because the packing is trying to validate the location of the executable during the design time. You can defer this validation to run time by changing the property DelayValidation on the Execute Process task from False to True.

Step-by-step process:

  1. On the SSIS package, I have place an Execute Process Task configured to use the tool Wget. Refer screenshots #1.

  2. Screenshot #2 the warning message similar to the screenshot shown in the question.

  3. Right-clicked on the Execute Process Task and selected Properties as shown in screenshot #3.

  4. In the properties window, changed the DelayValidation property value from False to True.

  5. Screenshot #5 shows that the warning no longer appears.

EDIT:

To suppress the warning altogether, even at the run-time, you can do something as following:

  1. Create a variable to store the full path of the wget.exe. Populate the variable with the full path to the wget.exe. The value could be different in your scenario. Refer screenshot #6.

  2. Double-click on the Execute Process task. On the Expressions section of the task click on the ellipsis button. Refer screenshot #7.

  3. On the Property Expressions Editor, set the Executable Property value to the newly created variable @[USer::WgetPath]. Refer screenshot #8.

Hope that helps.

Screenshot #1:

Screenshot #2:

Screenshot #3:

Screenshot #4:

Screenshot #5:

Screenshot #6:

Screenshot #7:

Screenshot #8:



回答2:

Go to the Properties for your Execute Process Task, and set the RequireFullFileName property to false. You can access the properties by clicking the task and pressing F4 or right clicking on the task and clicking properties from the context menu.

This solution has been tested working in VS 2017 with SSDT. You will have a yellow flag warning but the package will run the command.



标签: ssis