Sql-Server

我可以啟動一個儲存過程並立即返回而不等待它完成嗎?

  • June 16, 2017

我們有一個儲存過程,使用者可以手動執行該儲存過程,以獲取全天不斷使用的報告的一些更新數字。

我有第二個儲存過程應該在第一個儲存過程執行之後執行,因為它基於從第一個儲存過程獲得的數字,但是它需要更長的時間執行並且是一個單獨的程序,所以我不想在第二個儲存過程執行時讓使用者等待。

有沒有辦法讓一個儲存過程啟動第二個儲存過程,並立即返回而不等待結果?

我正在使用 SQL Server 2005。

看起來有多種方法可以實現這一點,但我發現最簡單的方法是Martin 建議在 SQL 作業中設置過程,並使用我的儲存過程中的非同步sp_start_job命令啟動它。

EXEC msdb.dbo.sp_start_job @job_name='Run2ndStoredProcedure'

這僅適用於我,因為我不需要為我的儲存過程指定任何參數。

其他可能會根據您的情況起作用的建議是

不錯的主意,但是在我的情況下,儲存過程是從多個地方呼叫的,因此找到所有這些地方並確保它們也呼叫第二個過程似乎並不實用。此外,第二個儲存過程非常關鍵,忘記執行它可能會給我們公司帶來一些重大問題。

  • 讓第一個過程設置一個標誌,並設置一個重複的作業來檢查該標誌並在其設置時執行,就像Jimbo 建議的那樣。我不喜歡持續執行並每隔幾分鐘檢查一次更改的工作,但根據您的情況,這當然是一個值得考慮的選項。

引用自:https://dba.stackexchange.com/questions/34947