SharedIT | 묻고 답하기(AMP)

mssql 배치잡 오류 조회

안녕하세요


중소기업 내부회계 담당자입니다.

다름이 아니라 IT 지식이 부족하여, 궁금한점 질문 남겨봅니다.


내부회계 통제 중 '배치잡 오류를 적시에 조회하여 처리한다'라는 문항이 있는데,

MS-SQL에서 배치잡 오류를 조회하는 방법을 잘 몰라 개발자분들의 지식 공유 부탁드립니다.


배치잡 오류를 조회하는 방법이 없으면 오류값을 조회하는 쿼리를 실행하여, '내역없음'이라는 화면으로 갈음 할 수 있다고 하는데, 해당 방법도 같이 공유해주시면 정말 감사하겠습니다..!



Tags : 태그가 없습니다.

5개의 답변이 있습니다.

명동쓰레빠
  0 추천 | 일 년 이상 전

덕분에 저도 좋은 정보 보고 갑니다.

어차피 agent로 돌리면 로그에 그정보가 있을건대 로그를 상세히 보시는것도 

wansoo
  0 추천 | 일 년 이상 전

등록된 Batch Job 현황 부터 확인해 보아야 할 걸로 보이네요.


등록된 Batch Job은 아래 쿼리로 확인해 볼 수 있겠고요.


select * from msdb.dbo.sysjobs


오류가 발생한 배치잡은 아래와 같이 조회해 볼 수도 있겠는데..

select * from msdb.dbo.sysjobhistory

where run_status = 0

and run_date between 20221222 and 20221223


msdb.dbo.sysjobs table에 오류 발생시 알림을 받고 싶은 잡에 대해 notify_level_email 의 값에더 2를 넣고,

notify_email_operator_id 에 메일 받을 메일 주소를 넣어 둔다면,

쿼리를 돌려서 확인하지 않고서도 배치 잡 수행 중 오류 발생시 즉각적으로 메일을 통해서 확인할수 있을 걸로 보여지네요.

xjacnx11 | 일 년 이상 전

남겨주신 코드를 쿼리에 입력해서 실행하면 될까요??


IT에 대한 지식이 너무 없어서...답변해주신 "msdb.dbo.sysjobs table에 오류 발생시 알림을 받고 싶은 잡에 대해 notify_level_email 의 값에더 2를 넣고,

notify_email_operator_id 에 메일 받을 메일 주소를 넣어 둔다면,

쿼리를 돌려서 확인하지 않고서도 배치 잡 수행 중 오류 발생시 즉각적으로 메일을 통해서 확인할수 있을 걸로 보여지네요."


이부분은 코드를 어떻게 수정해야될까요..?

wansoo | 일 년 이상 전

update msdb.dbo.sysjobs

set notify_level_email = 2,

set notify_email_operator_id = '메일주소'

where job_id = 대상Job_ID


와 같이 쿼리를 수행해 주면 될 걸로 보이네요。

전체 잡에 대해 일괄 처리하고 싶다면 where 자체를 없애 버리고 수행하면 될 것 같고


update msdb.dbo.sysjobs

set notify_level_email = 2,

set notify_email_operator_id = '메일주소'


와 같이~


데이터베이스 서버에 SMTP 메일 서버 설정이 되어 있어 줘야 가능하겠는데

메일 서버 설정은 아래 링크 내용을 참조하면 될 걸로 보이네요。


https://learn.microsoft.com/ko-kr/troubleshoot/sql/tools/troubleshoot-database-mail-issues

wansoo | 일 년 이상 전

msdb.dbo.sysjobs table 관련 추가적인 내용은 아래 링크를 참조하면 도움이 될 것 같네요.

https://learn.microsoft.com/ko-kr/sql/relational-databases/system-tables/dbo-sysjobs-transact-sql?view=sql-server-ver16

낭만생선
  0 추천 | 일 년 이상 전

오류가 발생한 시각과 상세 정보가 조회 되므로 이를 참고 하시면 되지 않을까 싶네요.

실제 작업 관리자 화면을 보시면 원하시는 조회가 될것 같은데요

xjacnx11 | 일 년 이상 전

한번 시도해보겠습니다 감사합니다 :)

차바라기
  0 추천 | 일 년 이상 전

SQL SSMS 로그인하셔서 배치잡 로그를 확인하실수 있습니다.

낭만생선
  0 추천 | 일 년 이상 전

Microsoft SQL Server에서 배치 잡 오류를 조회하는 가장 간단한 방법은 다음과 같습니다.

  • 1.작업 관리자를 열고, 왼쪽 패널에서 "작업 스케줄링"을 선택합니다.

  • 2."작업" 탭을 선택하고, 오류가 발생한 배치 잡을 찾습니다.

  • 3.선택한 배치 잡의 "상태"가 "오류"로 표시되면, 우측 패널에서 "작업 이력"을 선택합니다.

  • 4."작업 이력" 창에서, 오류가 발생한 시각과 상세 정보를 확인할 수 있습니다.

만약 작업 관리자를 사용할 수 없거나, 작업 이력을 조회할 수 없다면, 아래와 같은 쿼리를 사용할 수 있습니다.

Copy code

SELECT j.name AS job_name, h.run_status, h.run_date, h.run_time, h.messageFROM msdb.dbo.sysjobs jJOIN msdb.dbo.sysjobhistory hON j.job_id = h.job_idWHERE h.run_status = 0AND h.step_id = 0

이 쿼리는 실패한 배치 잡의 이름, 실행 상태, 실행 시각, 상세 메시지를 조회할 수 있는 기본적인 정보를 제공합니다.

xjacnx11 | 일 년 이상 전

답변 정말 감사합니다!

통제 문구가 일별로 조회하여 매일 보고서를 작성해서 승인을 받아야하는데, 혹시 기간 설정도 가능할까요??? 

예를들어 '2022-12-22 ~ 2022-12-22' 배치잡 실패 이력을 조회하여, 보고서 작성

이런식이라....바쁘신데 죄송합니다ㅜㅜ

그저멍하니 | 일 년 이상 전

SELECT j.name AS job_name, h.run_status, h.run_date, h.run_time, h.message FROM msdb.dbo.sysjobs j

JOIN msdb.dbo.sysjobhistory h ON j.job_id = h.job_id

WHERE h.run_status = 0 AND h.step_id = 0

and h.run_date >= '20221221' and h.run_date <= '20221223'


위 쿼리에 맨밑에 다가 날짜검색 구문만 추가하시면 됩니다.