آموزش حذف JOB های غیر قابل حذف در SQL Server

خیلی وقت ها براتون پیش اومده که زمانی که میخواین یه job رو توی MSSQL حذف کنین به ارور میخورین و Job حذف نمیشه مثل شکل زیر:

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
وب سایت توسینسو

خب کاری که ما میکنیم اینه که Message ارور رو چک میکنیم :

وب سایت توسینسو

خیلی وقتا شده به راحتی از کنار این ارور میگذریم و شاید به دنبال گوگول کردن مشکل باشیم اما اگه قسمتی که توی عکس با رنگ قرمز مشخص شده رو چک کنین میبینین که دقیقا دلیل حذف نشدن Job رو به ما گفته:

The Delete statement conflicted with the REFERENCE constraint "FK_subplan_job_id"
The conflict occurred in database "msdb",table "dbo.sysmanitplan_subplans",column "job_id".
…

قسمت مهمش در واقع خط دومشه که به ما گفته این job توی چه دیتابیس و چه جدولی استفاده شده .

ما هم به آسونی یه SELECT میزنیم:

USE msdb
GO
SELECT * FROM dbo.sysmaintplan_subplans

که اینجا میتونیم subplan های موجود رو ببینیم و اونی رو که مرتبط با Job مورد نظر ما است حذف کنیم:

DELETE FROM dbo.sysmaintplan_subplans
WHERE subplan_name='Subplan مورد نظر'

که طبعا باید اینجا هم ارور بده چون براش یه لاگ ثبت شده و همون طور که خودش گفته :

The DELETE statement conflicted with the REFERENCE constraint "FK_sysmaintplan_log_subplan_id". The conflict occurred in database "msdb", table "dbo.sysmaintplan_log", column 'subplan_id'.

باید subplan مربوطه رو از جدول dbo.sysmaintplan_log مربوط به دیتابیس msdb هم پاک کنیم:

DELETE FROM dbo.sysmaintplan_log WHERE subplan_id='subplan_id که قصد حذف کردن آنرا داریم که میشه'

این قسمت که حذف شد ، حذف مرحله قبل رو هم اجرا میکنیم و سپس به راحتی میتونیم job مورد نظر رو پاک کنیم.


نظرات