在SSIS(2015)中使用C#运行带有日期参数的命令行

时间:2018-11-22 14:31:46

标签: c# sql-server ssis

我需要在SSIS(2015)中使用C#在带有日期参数的Windows服务器上运行命令行

命令行示例:

D:\ TEST> dotnet TEST.dll --fromDateTime“ 2018-11-21” --toDateTime“ 2018-11-22”

您能协助我编写剧本吗?

谢谢

1 个答案:

答案 0 :(得分:0)

谢谢大家的帮助。

我找到了解决问题的答案:

  1. 因为它适用于EXE或BAT,所以不能使用SSIS执行过程任务

  2. 不想/不能将我的DotNet DLL更改为EXE,因为它的限制非常严格,并且该项目还包含许多其他因素,这些因素不在此问题范围内(并且开发工作由其他团队完成)< / p>

  3. 这是带有答案的C#-它有效! :)

    public void Main()     {         字符串FromDate = Dts.Variables [“ User :: FromDate”]。Value.ToString();         字符串ToDate = Dts.Variables [“ User :: ToDate”]。Value.ToString();         字符串TEST_Path = Dts.Variables [“ $ Package :: TEST_Path”]。Value.ToString();         字符串TEST_ExePath = Dts.Variables [“ $ Package :: TEST_ExePath”]。Value.ToString();

        var strCmdText = @"c:\program files\dotnet\dotnet.exe";
    
    
        var parameters = TEST_ExePath.ToString() + " --fromDateTime " + FromDate.ToString() + " --toDateTime " + ToDate.ToString();
        System.Diagnostics.Process p = new System.Diagnostics.Process();
    
        p.StartInfo = new System.Diagnostics.ProcessStartInfo(strCmdText, parameters);
        p.StartInfo.WorkingDirectory = TEST_Path;
    
        p.StartInfo.UseShellExecute = false;
    
        bool fireAgain = false;
    
        try
        {
            p.Start();
        }
        catch(Exception e)
        {
            Dts.Events.FireError(0, "Script Task Example", "Exception encountered: " + e.ToString(), String.Empty, 0);
        }
    
    
        p.WaitForExit();
    
    
        Dts.Events.FireInformation(0, "Script Task Example", "Exit code = " + p.ExitCode.ToString(), String.Empty, 0, ref fireAgain);
    
    
        Dts.TaskResult = (int)ScriptResults.Success;
    }