안녕하세요
중소기업 내부회계 담당자입니다.
다름이 아니라 IT 지식이 부족하여, 궁금한점 질문 남겨봅니다.
내부회계 통제 중 '배치잡 오류를 적시에 조회하여 처리한다'라는 문항이 있는데,
MS-SQL에서 배치잡 오류를 조회하는 방법을 잘 몰라 개발자분들의 지식 공유 부탁드립니다.
배치잡 오류를 조회하는 방법이 없으면 오류값을 조회하는 쿼리를 실행하여, '내역없음'이라는 화면으로 갈음 할 수 있다고 하는데, 해당 방법도 같이 공유해주시면 정말 감사하겠습니다..!
해당 질문의 문제를 해결, 도움이 되는 선택된 답변이 있습니다.
작성된 다른 답변도 확인해 보시기 바랍니다..
5개의 답변이 있습니다.
덕분에 저도 좋은 정보 보고 갑니다.
어차피 agent로 돌리면 로그에 그정보가 있을건대 로그를 상세히 보시는것도
등록된 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
오류가 발생한 시각과 상세 정보가 조회 되므로 이를 참고 하시면 되지 않을까 싶네요.
실제 작업 관리자 화면을 보시면 원하시는 조회가 될것 같은데요
xjacnx11 | 일 년 이상 전
한번 시도해보겠습니다 감사합니다 :)
SQL SSMS 로그인하셔서 배치잡 로그를 확인하실수 있습니다.
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'
위 쿼리에 맨밑에 다가 날짜검색 구문만 추가하시면 됩니다.