Запуск файла .dtsx через командную строку программно из winform c # - PullRequest
0 голосов
/ 20 февраля 2019

Я новичок в программировании.Я надеялся на некоторую помощь, чтобы исправить приведенный ниже код.

У меня есть приложение WinForms, использующее базу данных Azure SQL.в целом я пытаюсь автоматически импортировать файл CSV, когда он поступает в папку cdrive.

Я исследовал и попробовал BCP, но не смог пройти проверку безопасности Azure на своей учетной записи ...., я не думаю, что мой синтаксис построен правильно.Я также снова посмотрел на вариант хранения Blob без особой удачи.Мне нужно больше исследовать эти варианты.

если применить следующее непосредственно к командной строке

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

Я получу успешный результат.Имея это в виду, я затем перетащил fileSystemWatcher на свои WinForms, а затем применил следующий код:

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));


}

, где он сейчас терпит неудачу, я перепробовал много вариантов, найденных на различных форумах, однако .dtsxфайл никогда не импортируется в базу данных SQL Azure.Тем не менее, я получаю ответное сообщение с указанием изменений в папке.

Любая помощь в освещении, где я иду не так, и исправление вышеупомянутого было бы здорово.пожалуйста, потерпите меня, так как я новичок в c # и программировании в целом.спасибо

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Вам не хватает закрытия " для аргументов, попробуйте:

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

См. Здесь для использования двойных кавычек и @

0 голосов
/ 20 февраля 2019
 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));


    }

Я заменил «FileName =" cmd.exe »на« ImportScript.dtsx ». Попробуйте. :) Я не уверен на 100%, но из того, что я вижу, это не так. (Возможно, другоеможно увидеть еще одну проблему, но хотя бы попробуйте :))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...