SQL 질문과 답변 게시판
매일 오전 5시에 로그를 날짜별로 CYCLE 하는 JOB이 실행됩니다.
EXEC GameLogDB.dbo.Proc_LogCycle
GO
EXEC GameLogDB2.dbo.Proc_LogCycle
GO
EXEC GameLogDB3.dbo.Proc_LogCycle
GO
... 10개 정도의 DB입니다.
Proc_LogCycle 프로시저의 스크립트 내용은 같고
안의 내용은 아래과 같습니다.
JOB이 매일 실패하는 것은 아니고,
가끔 실패를 하는데 여러 DB중 하나에서만 갑자기 아래와 같은 오류가 발생하면서 밑에 있는 db들도 실패하게 됩니다.
------------------------------------------------------------
-- Proc_LogCycle 프로시저의 스크립트 내용
------------------------------------------------------------
--1. 테이블 생성
TblLogOp1
TblLogOp2
TblLogOp3
TblLogOp4
--2. 테이블 이름 세팅--어제 이름으로
declare @old_table_name1 varchar(100)
declare @old_table_name2 varchar(100)
declare @old_table_name3 varchar(100)
declare @old_table_name4 varchar(100)
set @old_table_name1 = 'TblLogOp1_' + convert(char(8),dateadd(dd,-1,getdate()),112)
set @old_table_name2 = 'TblLogOp2_' + convert(char(8),dateadd(dd,-1,getdate()),112)
set @old_table_name3 = 'TblLogOp3_' + convert(char(8),dateadd(dd,-1,getdate()),112)
set @old_table_name4 = 'TblLogOp4_' + convert(char(8),dateadd(dd,-1,getdate()),112)
--3. 테이블 이름 변경
exec sp_rename 'TblLogOp1',@old_table_name1
exec sp_rename 'TblLogOp1_new','TblLogOp1'
exec sp_rename 'TblLogOp2',@old_table_name2
exec sp_rename 'TblLogOp2_new','TblLogOp2'
exec sp_rename 'TblLogOp3',@old_table_name3
exec sp_rename 'TblLogOp3_new','TblLogOp3'
exec sp_rename 'TblLogOp4',@old_table_name4
exec sp_rename 'TblLogOp4_new','TblLogOp4'
--4. 이후 어떠한 작업
....
------------------------------------------------------------
-- 에러 메시지
------------------------------------------------------------
메시지
다음 사용자로 실행되었습니다: (메시지 15477)
주의: 개체 이름 부분을 변경하면 스크립트 및 저장 프로시저를 손상시킬 수 있습니다. [SQLSTATE 01000] (메시지 15477)
주의: 개체 이름 부분을 변경하면 스크립트 및 저장 프로시저를 손상시킬 수 있습니다. [SQLSTATE 01000] (메시지 15477)
주의: 개체 이름 부분을 변경하면 스크립트 및 저장 프로시저를 손상시킬 수 있습니다. [SQLSTATE 01000] (메시지 15477)
주의: 개체 이름 부분을 변경하면 스크립트 및 저장 프로시저를 손상시킬 수 있습니다. [SQLSTATE 01000] (메시지 15477)
주의: 개체 이름 부분을 변경하면 스크립트 및 저장 프로시저를 손상시킬 수 있습니다. [SQLSTATE 01000] (메시지 15477)
주의: 개체 이름 부분을 변경하면 스크립트 및 저장 프로시저를 손상시킬 수 있습니다. [SQLSTATE 01000] (메시지 15477)
주의: 개체 이름 부분을 변경하면 스크립트 및 저장 프로시저를 손상시킬 수 있습니다. [SQLSTATE 01000] (메시지 15477)
주의: 개체 이름 부분을 변경하면 스크립트 및 저장 프로시저를 손상시킬 수 있습니다. [SQLSTATE 01000] (메시지 15477)
주의: 개체 이름 부분을 변경하면 스크립트 및 저장 프로시저를 손상시킬 수 있습니다. [SQLSTATE 01000] (메시지 15477)
주의: 개체 이름 부분을 변경하면 스크립트 및 저장 프로시저를 손상시킬 수 있습니다. [SQLSTATE 01000] (메시지 15477)
주의: 개체 이름 부분을 변경하면 스크립트 및 저장 프로시저를 손상시킬 수 있습니다. [SQLSTATE 01000] (메시지 15477)
주의: 개체 이름 부분을 변경하면 스크립트 및 저장 프로시저를 손상시킬 수 있습니다. [SQLSTATE 01000] (메시지 15477)
주의: ... 단계가 실패했습니다.
확인을 해보니, 이름부분만 변경이 안되었고 테이블 생성까지만 되었습니다.
저 메시지는 개체이름 변경할때 경고인거 같은데.. 잡이 실패하는 이유를 잘 모르겠습니다.
아.. 그리고 실패를 해서 다시 수동으로
쿼리문으로 다시 실행하면 에러없이 잘 됩니다.
부탁드립니다 (_ _)

성대중(지우아빠)
쓸만한게없네(윤선식)

이름 변경하기 위해 해당 테이블의 메타데이터에 잠금설정이 필요한데 그 부분에 해당 시점에 다른 작업이 진행되면서 잠금설정을 할 수 없는 상황이 되었던 것으로 판단됩니다.
정확한 오류 메시지가 있어야 원인이 분석가능할 것으로 판단됩니다.
경고 메시지는 발생하는 것이 일반적인 경우이며, 실패한 원인에 대한 오류 메시지가 필요합니다.
감사합니다.