SQLSERVER 維護計劃無法刪除
阿新 • • 發佈:2018-11-08
資料對網站運營或者企業運營是至關重要的,所以,我們在使用資料庫的時候,為了保證資料的安全可靠性,都會做資料庫備份,很顯然,這個備份,我們不可能每天都去手動備份,SQLServer 資料庫就可以提供資料庫定時備份的任務,你可以設定按照天、周、月、年等不同設定不同的備份週期,這裡我就不在介紹自動備份的設定了,百度教程可以找到一大波,最重要的一點就是,一定要開啟Sqlserver 代理服務,否則自動備份就無法執行了。
設定好了,資料庫會在【管理】-【維護計劃】中建立一條記錄,同時,也會在【Sql server 代理】-【作業】中建立一條作業記錄;如下圖:
然後,一段時間過去了……
我們的自動備份失效了,或者自動備份不需要了,我們需要刪除;
正常情況下,只要在【管理】-【維護計劃】中,找到不需要的維護計劃,滑鼠右鍵-刪除就可以了,同時,資料庫也會把【Sql server代理】中的記錄也會刪除;
非正常情況下,就是滑鼠右鍵無法刪除的情況了,我們則需要通過SQL程式碼來刪除;
刪除需要分兩部分:
一:刪除【管理】中的維護計劃;
USE [msdb] SELECT * FROM sysmaintplan_plans --檢視資料庫中所有的維護計劃 DELETE sysmaintplan_plans WHERE name='' --刪除具體名稱的維護計劃
二:刪除【Sql server代理】中的作業;
USE [msdb] Declare @job_name varchar(100) SET @job_name = N'jobName' --注:jobName為維護計劃對應的jobName --刪除在計劃裡面的日誌 DELETE sysmaintplan_log FROM sysmaintplan_subplans as subplans INNER JOIN sysjobs_view as syjobs on subplans.job_id = syjobs.job_id INNER JOIN sysmaintplan_log on subplans.subplan_id =sysmaintplan_log.subplan_id WHERE (syjobs.name = @job_name) --刪除代理的作業 DELETE sysjobschedules FROM sysjobs_view v INNER JOIN sysjobschedules o on v.job_id=o.job_id WHERE[email protected]_name --刪除子計劃 DELETE sysmaintplan_subplans FROM sysmaintplan_subplans as subplans INNER JOIN sysjobs_view as syjobs ON subplans.job_id = syjobs.job_id WHERE (syjobs.name = @job_name) --刪除作業 DELETE FROM msdb.dbo.sysjobs_view WHERE name = @job_name