sqlserver 刪除job失敗
2025-06-17 20:17 abce 閱讀(76) 評論(0) 收藏 舉報刪除一個維護計劃,在sqlserver agent中發現對應的job仍熱存在,且在嘗試手動刪除該job的時候,發現刪除失敗,報錯信息如下:

復制一下錯誤信息:
標題: Microsoft SQL Server Management Studio ------------------------------ Job "incr_backup.Subplan_1" 的 刪除 失敗。 (Microsoft.SqlServer.Smo) 有關幫助信息,請單擊: https://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=16.200.48044.0&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=刪除+Job&LinkId=20476 ------------------------------ 其他信息: 執行 Transact-SQL 語句或批處理時發生了異常。 (Microsoft.SqlServer.ConnectionInfo) ------------------------------ DELETE 語句與 REFERENCE 約束"FK_subplan_job_id"沖突。該沖突發生于數據庫"msdb",表"dbo.sysmaintplan_subplans", column 'job_id'。 語句已終止。 (Microsoft SQL Server,錯誤: 547) 有關幫助信息,請單擊: https://docs.microsoft.com/sql/relational-databases/errors-events/mssqlserver-547-database-engine-error ------------------------------ 按鈕: 確定 ------------------------------
mssql的維護計劃是保存在msdb庫中的,刪除不掉與sysmaintplan_log ,sysmaintplan_subplans,sysmaintplan_plans三張表有關。其中:
·sysmaintplan_log: 在維護計劃運行后,會在此表中進行記錄
·sysmaintplan_subplans: 記錄維護計劃的子計劃信息
·sysmaintplan_plans: 維護計劃信息
首先查看一下維護計劃以及子計劃:
use msdb select name,id from sysmaintplan_plans select subplan_id,subplan_name,plan_id,job_id from sysmaintplan_subplans
查詢結果為:

可以發現有一個多出來的子計劃存在。將這條殘留的子計劃刪除即可:
delete from sysmaintplan_subplans where plan_id='1C809CEC-F2E1-402D-A006-1161EB5907B9';
然后就可以成功刪除該job了。

浙公網安備 33010602011771號