Sql-Server
msdb.dbo.sp_start_job 卡在儲存過程中
我有一個儲存過程
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 過程之前的所有邏輯移動到一個單獨的儲存過程中來解決的。
希望它可以幫助遇到同樣問題的任何人。