2013-07-25 98 views
1

我正在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然後退出?我做錯了什麼?

感謝

回答

1

嘗試傳遞Synchronized flag到DTEXEC

/Par "$ServerOption::SYNCHRONIZED(Boolean)";True

+0

感謝 - 這工作。我還在http://msdn.microsoft.com/en-us/library/hh231187.aspx#parameter –

+0

上找到了一些信息,很高興聽到它並歡迎來到SO。如果您發現有用的問題或答案,請隨時點擊向上箭頭。如果這解決了您的問題,您可以點擊綠色複選標記將其設置爲已解決 – billinkc