Sql-Server

msdb.dbo.sp_start_job 卡在儲存過程中

  • June 23, 2016

我有一個儲存過程USP_A,其邏輯如下:

......
BEGIN TRY
exec dbo.usp_Log 'Start to run job job1'
Exec @intErrorCode = msdb.dbo.sp_start_job 'job1'   
 IF @intErrorCode <> 0 Goto errorHandling
exec dbo.usp_Log 'End to run job job1'
Return @intErrorCode
END TRY
BEGIN CATCH
 exec dbo.usp_Log 'Error......'
END CATCH
......

但是當我執行這個儲存過程時,它卡住了,當我檢查日誌時,我只能看到消息“開始執行作業 job1”。並且在 CATCH 塊中沒有發現錯誤。同樣在 SQL Server 代理作業監視器中,我看不到該作業被觸發。

但是如果我手動執行

Exec @intErrorCode = msdb.dbo.sp_start_job 'job1' 

它工作正常。

SQL Server 是 Microsoft SQL Server 2005 Enterprise Edition(版本 9.00.5000.00)

更新

似乎sp崩潰而不是掛斷。因為我使用 sp_WhoIsActive 來查找正在等待的查詢並且沒有返回記錄。

我還嘗試評論開始工作的邏輯,只是

Return @intErrorCode

但是 SP 仍然掛起(或崩潰)。

結果證明是某種 SQL Server 錯誤(也許 SQL Server 2005 已經很老了)。儲存過程剛剛意外結束,不返回任何程式碼。

所以問題是通過將這個 msdb.dbo.sp_start_job 過程之前的所有邏輯移動到一個單獨的儲存過程中來解決的。

希望它可以幫助遇到同樣問題的任何人。

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