我需要在带有日期参数的Windows服务器上使用SSIS(2015(中的C#运行命令行
命令行示例:
D: \TEST>dotnet TEST.dll--从DateTime"2018-11-21"--到DateTime"2018-11-22">
你能帮我写剧本吗?
感谢
感谢大家的帮助。
我找到了问题的答案:
-
无法使用SSIS执行进程任务,因为它适用于EXE或BAT
-
不想/不能将我的DotNet DLL更改为EXE,因为它非常有限,并且该项目包括许多其他不属于此问题的因素(开发由其他团队完成(
-
这是C#的答案-它有效!:(
public void Main(({string FromDate=日期。变量["User::FromDate"]。价值ToString((;string ToDate=日期。变量["User::ToDate"]。价值ToString((;string TEST_Path=Dts。变量["$Package::TEST_Path"]。价值ToString((;string TEST_ExePath=Dts。变量["$Package::TEST_ExePath"]。价值ToString((;
var strCmdText = @"c:program filesdotnetdotnet.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; }