فيكس كردن ارور پاك نشدن Job

امروز يكي از همكارام ميخواست يك Job رو تو Sql Server 2005 پاك كنه كه ارور زير رو ميگرفت
Drop failed for Job ‘XXXXXXXXXXXXX’. (Microsoft.SqlServer.Smo)
The DELETE statement conflicted with the REFERENCE constraint “FK_subplan_job_id”. The conflict occurred in database “msdb”, table “dbo.sysmaintplan_subplans”, column ‘job_id’.
The statement has been terminated. (Microsoft SQL Server, Error: 547)
بعد جستجو راه حلش رو تو اين وبلاگ پيدا كردم

اول لاگ هاي اين پلن رو پاك ميكنيم

USE [msdb]
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 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)

بعدم خود Job رو

delete from msdb.dbo.sysjobs_view where name = @job_name

توجه كنيد @job_name نام Job ماست كه بايد در دستورات بالا جايگزين بشه

منبع

نظرات

پست‌های معروف از این وبلاگ

lnav ابزاری بسیار کاربردی برای پیمایش لاگ ها در لینوکس و البته مک

ساختن ایمیج های داکری به کمک BuildKit - بخش دوم

ساختن ایمیج های داکری به کمک BuildKit - بخش اول