Chciałem usunąć joby powiązane z maintnance planem. Zacząłem od usunięcia maintnance planu, co udało się znakomicie! Maintanace planów już nie było, joby pozostały. Próbuję więc usunąć joba, a tu:
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)
Job (tabela dbo.sysjobs) jest powiązany z innymi obiektami (tabele sysmaintplan_log, sysmaintplan_subplans, sysjobschedules). Tabele są powiązane przez klucze obce, więc usuwanie można wykonać, ale trzeba to zrobić we właściwej kolejności. Moja propozycja:
USE msdb
GO DECLARE @job_id UNIQUEIDENTIFIER
SELECT @job_id=job_id FROM sysjobs
WHERE name = 'Here enter the job name, which you like to remove'
BEGIN TRAN
DECLARE @subplan_id UNIQUEIDENTIFIER
SELECT @subplan_id=subplan_id FROM dbo.sysmaintplan_subplans where job_id = @job_id
DELETE FROM dbo.sysmaintplan_log WHERE subplan_id = @subplan_id
DELETE FROM dbo.sysmaintplan_subplans WHERE job_id = @job_id
DELETE FROM dbo.sysjobschedules WHERE job_id= @job_id
DELETE FROM dbo.sysjobs WHERE job_id = @job_id
COMMIT