MSX 서버에서 온 작업이나 그단계 또는 일정을 추가 업데이트 삭제할 수 없습니다
해결
/*srvid = 0 srvname='LEETEST'*/
use master
select * from sysservers
/*originating_server='WEBTEST' 를 'LEETEST'로 수정해서 해결함.' */
use msdb
select * from sysjobs
EXEC sp_configure 'allow updates', 1
Update sysjobs
set originating_server = 'LEETEST'
EXEC sp_configure 'allow updates', 0
이러한 메시지가 뜰 것입니다.
"MSX 서버에서 온 작업이나 그단계 또는 일정을 추가 업데이트 삭제할 수 없습니다."
"DEVPIA에서 찾은 QNA를 발췌하겠습니다.
========================================================
이 문제는 SQL2000의 특성으로 인해 발생하는 문제입니다.
모든 scheduling job들은 ‘msdb..sysjobs’ 시스템 테이블에 저장됩니다.
sysjobs 테이블에는 ‘originating_server’ 칼럼이 존재하고 이 칼럼에는 job이 생성된 server의 이름이 저장됩니다.
SQL7.0에서는 ‘originating_server’ 칼럼에 항상 ‘(local)’ 값이 저장되기 때문에 Server의 이름을 변경해도 영향을 받지 않습니다. 하지만, SQL2000에서는 Multiple Instance가 지원되기 때문에 ‘originating_server’ 칼럼에 실제 SQL Server의 instance명이 저장되게 됩니다.
만일, Server의 이름이 변경되면 현재의 Server명과 msdb..sysjobs’ 테이블에 저장된 ‘originating_server’의 값이 다르기 때문에 job 변경/삭제시 14274에러가 발생하게 됩니다.
다음의 쿼리를 실행하여 jon 변경/삭제시 발생하는 에러를 없앨 수 있습니다.
update msdb..sysjobs set originating_server = ‘<new server>’
where originating_server = ‘<old server>’
만일, Named Instance를 사용하는 job이라면 다음의 쿼리를 실행합니다.
update msdb..sysjobs set originating_server = ‘<new server>\<instance>’
where originating_server = ‘<old server>\<instance>’
참고적으로 ‘select * from msdb..sysjobs’ 쿼리를 실행한 다음 originating_server 칼럼을 확인하여 모든 job들에 대해 설정되어 있는 SQL Server명을 확인할 수 있습니다.
========================================================
이렇게 수행하셔도 되고
EM을 열고 직접 msdb 가셔서 모든 행 반환해서 수정하셔도 같은 결과가 나올겁니다.
'Development > DataBase' 카테고리의 다른 글
MySQL을 MSSQL으로 마이그래이션 - (2) (0) | 2011.08.13 |
---|---|
MySQL을 MSSQL으로 마이그래이션 - (1) (0) | 2011.08.13 |
MS-SQL MD5 사용하기 위한 DLL (0) | 2011.08.13 |
MS-SQL DB 복원 시 사용자 로그인 이름 연결 (0) | 2011.08.13 |
MS-SQL datetime을 time_t값으로 가져오는 쿼리 (0) | 2011.08.13 |