2009. 11. 14. 14:54

SQL 2005 [유지 관리 계획] 삭제 불가.



Management Studio 를 이용해서 [유지 관리 계획] 삭제시 위와 같은 오류가 발생하였습니다

이 현상의 주된 원인은 sysmaintplan_plans 테이블의 ID 값과, 해당 계획의 로그가 쌓이는 sysmaintplan_log 의 ID 값이 서로 다르기 때문에 발생하는 것입니다.

다음을 참고하여 [유지 관리 계획]을 삭제하도록 하겠습니다.


use msdb

-- 유지관리 계획의 Plan_id 를 확인 합니다.
select * from sysmaintplan_plans

-- subplan을 제거하기 위해서 Sysmaintplan_subplans를 쿼리하여 확인합니다.
select * from sysmaintplan_subplans

-- subplan 을 제거한다.(2개의 subplan 이 있어 2개를 지웠습니다.)

delete from sysmaintplan_subplans
where plan_id='96848039-CC92-45DC-8B37-E54EF13A225E'


delete from sysmaintplan_subplans
where plan_id='B5D0AECC-D8D6-41A3-9B39-BB665A42F886'


- 저는 log 값의 ID 가 다르기 때문에 아래와 같은 메세지 도출로 지워지지 않았습니다.

메시지 547, 수준 16, 상태 0, 줄 1
DELETE 문이 REFERENCE 제약 조건 "FK_sysmaintplan_log_subplan_id"과(와) 충돌했습니다. 데이터베이스 "msdb", 테이블 "dbo.sysmaintplan_log", column 'subplan_id'에서 충돌이 발생했습니다.
문이 종료되었습니다.
메시지 547, 수준 16, 상태 0, 줄 5
DELETE 문이 REFERENCE 제약 조건 "FK_sysmaintplan_log_subplan_id"과(와) 충돌했습니다. 데이터베이스 "msdb", 테이블 "dbo.sysmaintplan_log", column 'subplan_id'에서 충돌이 발생했습니다.
문이 종료되었습니다.


-- 로그 삭제 시에도 동일한 위와 같은 동일한 메세지가 나타났습니다.
delete from sysmaintplan_log
where plan_id='ABD1DA4A-DE08-42CD-BE4C-1BB24735BE27'

delete from sysmaintplan_log
where plan_id='2C20AFCA-3F48-463A-86A3-4AB28E1CAC49'


-- 로그 삭제시에도 동일한 메세지가 나타났습니다.
   저는 SQL 200에서 2005 로 계정&페스워드를 sp_help_revlogin 을 이용해서 가져왔기 때문에
   plan_id 가 틀린듯합니다.


-- 다름 쿼리문을 사용해서 plan_id 가 무엇으로 되어 있는지 확인한후 다시 삭제 하였습니다.

select * from sysmaintplan_log
go
(plan_id 가 초기 나타난 값과 입력되어 있는 값이 틀린것으로 확인되었습니다.)

-- 서버내에 입력된 값을 가지고 로그를 삭제하겠습니다.
delete from sysmaintplan_log
where plan_id='B5D0AECC-D8D6-41A3-9B39-BB665A42F886'

delete from sysmaintplan_log
where plan_id='96848039-CC92-45DC-8B37-E54EF13A225E'


-- 이상없이 삭제 되는 것을 확인 하고, 유지관리 계획을 삭제 합니다.
delete from sysmaintplan_plans
where name='Full_Backup'

delete from sysmaintplan_plans
where name='TR_Backup'