我正在Powershell中使用DTEXEC运行一系列SSIS包。这些软件包驻留在SSISDB中。SSISDB记录包执行状态需要多长时间?
运行一个软件包没有问题,但是我遇到了一些问题,一旦软件包完成,我就会遇到确定实际结果状态的问题。从SSISDB运行程序包时,即使程序包失败(例如,在任务验证过程中未找到文件),DTEXEC似乎也会返回ZERO返回码。
我试图查询SSISDB(catalog.executions)检查一旦DTEXEC完成(或我认为它已完成)的状态。我可以回到状态2(“运行”)。这甚至发生在我添加5-10秒等待时。
我怀疑我用来运行DTEXEC的代码可能是罪魁祸首。这是我使用的功能:
function run_pkg ($DTExecArgs) {
$rc = -1
# Run DTExec
$pinfo = New-Object System.Diagnostics.ProcessStartInfo
$pinfo.Filename = "C:\Program Files\Microsoft SQL Server\110\DTS\Binn\DTExec.exe"
write-host "Starting... " $DTExecArgs
# The next few lines are required to make sure the process waits for
# the package execution to finish
$pinfo.RedirectStandardOutput = $true
$pinfo.UseShellExecute = $false
$pinfo.Arguments = $DTExecArgs
$p = New-Object System.Diagnostics.Process
$p.StartInfo = $pinfo
$p.Start() | Out-Null
$output = $p.StandardOutput.ReadToEnd()
$p.WaitForExit()
$rc = $p.ExitCode
# DTExec Finished
return $rc
}
给函数的参数是这样的:
/isserver \ SSISDB \ IPTS-DW \ ETL \ ETL_SYSTYPE_T_PKG.dtsx /服务器localhost
我想WaitForExit()应该使脚本等到DTEXEC完成。
任何想法? DTEXEC是否将工作从栅栏扔到ICS然后退出?我做错了什么?
感谢
感谢 - 这工作。我还在http://msdn.microsoft.com/en-us/library/hh231187.aspx#parameter –
上找到了一些信息,很高兴听到它并欢迎来到SO。如果您发现有用的问题或答案,请随时点击向上箭头。如果这解决了您的问题,您可以点击绿色复选标记将其设置为已解决 – billinkc