我正在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