'Running .dtsx file via command line programmatically from a winform c#

I am new to programming. I was hoping for some help to correct the below code.

I have a WinForms application using an Azure SQL database. overall I am trying to automatically import a CSV file as it arrives in a cdrive location.

I have researched and tried BCP but failed to get passed Azure's security on my own account...., I don’t think my syntax is correctly built. I have also looked into Blob storage option again without much luck. I need to do more research on these options.

if I apply the following directly to the command line

dtexec/f “C:\InboundWindow\ImportScript.dtsx 

I get a successful result outputted. With this, in mind, I have then dragged a fileSystemWatcher to my WinForms and then applied the following code.

private void fileSystemWatcher1_Created(object sender, FileSystemEventArgs e) {


  // Process.Start("cmd", @"/C dtexec/f “C:\InboundWindow\ImportScript.dtsx");
  Process p = new Process();
  p.StartInfo.FileName = "cmd.exe";
  p.StartInfo.Arguments = @ "/C dtexec/f “C:\InboundWindow\ImportScript.dtsx";
  p.StartInfo.RedirectStandardOutput = false;
  p.StartInfo.UseShellExecute = false;
  p.StartInfo.CreateNoWindow = false; //don't show the console at all
  p.Start();


  // FullPath is the new file's path.
  MessageBox.Show(string.Format("Created: {0} {1}", e.FullPath, e.ChangeType));


}

this is where it now fails I have tried many variations found on various forums however the .dtsx file is never imported to Azure SQL database. however, I get a return message stating a change in the folder.

Any help in highlighting where I am going wrong and correcting the above would be great. please bear with me as I am new to c# and programming in general. thanks



Solution 1:[1]

You're missing a closing " for the Arguments, try:

p.StartInfo.Arguments = @"/C dtexec/f ""C:\InboundWindow\ImportScript.dtsx""";

See here for using double quotes and @

Solution 2:[2]

 private void fileSystemWatcher1_Created(object sender, FileSystemEventArgs e)
    {


       // Process.Start("cmd", @"/C dtexec/f “C:\InboundWindow\ImportScript.dtsx");
        Process p = new Process();
        p.StartInfo.FileName = "ImportScript.dtsx"; //Since this is the name of the file that's going to be started
        p.StartInfo.Arguments = @"/C dtexec/f “C:\InboundWindow\ImportScript.dtsx";
        p.StartInfo.RedirectStandardOutput = false;
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.CreateNoWindow = false;  //don't show the console at all
        p.Start();


        // FullPath is the new file's path.
        MessageBox.Show(string.Format("Created: {0} {1}", e.FullPath, e.ChangeType));


    }

I replaced the "FileName = "cmd.exe" with "ImportScript.dtsx". Try that. :) I'm not 100 percent sure, but from what I can see that's the wrong. (Maybe other can see another problem, but at least try it :) )

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Zer0
Solution 2 Putte