2014-03-24 61 views
1

我創建了一個觸發SQL作業以啓動SQL Server的Windows應用程序。這就是我編寫代碼來觸發這項工作的方式。Winforms中的SQL作業狀態

SqlCommand ExecJob = new SqlCommand(); 

ExecJob.Connection = sqlConn; 
ExecJob.CommandType = CommandType.StoredProcedure; 
ExecJob.CommandText = "msdb.dbo.sp_start_job"; 
ExecJob.Parameters.AddWithValue("@job_name", "DataImport"); 

sqlConn.Open(); 
ExecJob.ExecuteNonQuery(); 

它運行良好,並在大約40秒內完成。在這個工作成功完成之前,我不想在程序中啓用某些功能。有誰知道我該怎麼做?

+3

不明白你的問題。爲什麼不在ExecuteNonQuery完成後立即啓用你的函數? –

+0

可能的重複[如何確定作業的狀態?](http://stackoverflow.com/questions/200195/how-can-i-determine-the-status-of-a-job) –

+0

ExecuteNonQuery is只是一個查詢來開始工作。這項工作可能需要40秒,但SqlCommand不會坐下來等待它。 –

回答

1

在這裏您可以找到一篇文章,展示如何獲取sql作業的狀態。

How can I determine the status of a job?

然後,你只需要定義一個計時器,池數據庫,並要求作業狀態。

+0

完美謝謝。 –

0

我想我有點理解你的問題......最好的方法是將你的存儲過程的輸出設置爲一個特定的值,然後將該值傳遞給你的程序並檢查值以查看天氣您的功能應該根據proc是否成功運行來啓用或禁用。