2016-04-07 69 views
0

我在我的應用程序中調用一個存儲過程,這需要很長時間刪除數據庫中的記錄。我意識到如果我在執行過程中殺死了我的應用程序進程,那麼停止刪除記錄。即使在客戶進程被終止時也執行長時間運行的SQL查詢

我試過SqlCommand.ExecuteNonQuerySqlCommand.BeginExecuteNonQuery,但都具有相同的效果。

有沒有辦法啓動一個SQL查詢執行到最後,無論客戶端發生了什麼?

更新: 在這種情況下,我希望進程異步運行,最好是參數化。

+1

爲什麼需要很長時間?你是否刪除了數百萬條記錄?或者你是否正在刪除一個巨大的表中的記錄?在連接終止後,無法繼續執行查詢。 – FLICKER

+0

所以沒有'火和忘記'? –

+1

不,沒有,除非你執行一項工作 – FLICKER

回答

1

您可以將過程添加到SQL Server作業並執行SQL Server作業,而不是該過程。

USE msdb ; 
GO 

EXEC dbo.sp_start_job N'Weekly Sales Data Backup' ; 
GO 
+0

你如何回答不知道問題細節的問題?如果在數據輸入過程中發生DELETE,他不能使用sql-job。 – FLICKER

+0

爲什麼你認爲有問題?他只是想開始一些不會在連線斷線時死亡的東西。 Offcourse可以在其他數據導入時啓動sql作業。這就是爲什麼我們有lockinh機制。好的併發性可能會出現問題......但那不是現在的問題。 – Jeffrey

+0

我在評論中提到了原因。 OP說他有一個應用程序,在他的應用程序中,他調用刪除記錄的過程,我假定在刪除記錄後,他的代碼正在做其他事情,所以這不能是異步的。他的應用程序必須等待記錄被刪除,然後繼續執行應用程序代碼。他不清楚情況,任何答案都可能是正確/錯誤/誤導或混淆。 – FLICKER

相關問題