Azure SQL Managed Instance 에서 SQL Agent Job history 기록 보관하기

 

·         Version : Azure SQL

 

Azure SQL Managed Instance Azure 클라우드에서 호스트되는 완전히 관리되는 SQL Server 이다. Managed Instance 많은 SQL Server기능을 제공하지만  가지 제약이 있다제약사항  하나는 SQL Agent작업 실행의 히스토리 기록을 변경할  없다는 것이다이번 포트스에서는  제약 사항을 다른 방법으로 우회하여 해결하는 방법  하나를 소개한다.

 

Managed Instance SQL Agent  작업당 100개의 히스토리를 기록하며,   1000개의  히스토리 기록을 유지할  있다아래 프로시저를 실행하면 jobhistory_max_rows_per_job열에서  정보를 확인할  있다.

exec msdb.dbo.sp_get_sqlagent_properties

 

Azure SQL Managed Instance SQL Agent 히스토리를 기록하는 정보 값을 기본 레지스트리 값에 저장하므로 SQL Agent등록 정보를 변경할  없다그래서 SQL Agent 작업 히스토리에 대한 보존 정책 (작업  100개의 히스토리 또는  전체 히스토리 최대 1000개의 기록) 고정시켯다 일부 직업의 경우  오래된 작업 기록을 확인하지    있다따라서 이러한 작업 히스토리 정보를 장기적으로 또는 삭제되기 이전에  정보를 보존하려면 sysjobhistory 테이블에서 정보를 다른 테이블에 저장해야 한다 아래 예제를 통해서 어떻게 저장하는지 살펴본다.

 

Azure SQL Managed Instance Job history 테이블의 변경사항(삭제업데이트) 기록하기 위한 테이블을 생성하고 기존 테이블에 변경 사항이 있을때  버전 배치작업을 사용하여 히스토리를 새로운 테이블을 기록한다. sysjobhistory 테이블의 변경 사항을 다른 테이블(sysjobhistoryall) 저장하도록 변환하려면 아래 스크립트를 적용한다.

ALTER TABLE [msdb].[dbo].[sysjobhistory]

ADD StartTime DATETIME2 NOT NULL DEFAULT ('19000101 00:00:00.0000000')

GO

 

ALTER TABLE [msdb].[dbo].[sysjobhistory]

ADD EndTime DATETIME2 NOT NULL DEFAULT ('99991231 23:59:59.9999999')

GO

 

ALTER TABLE [msdb].[dbo].[sysjobhistory]

ADD PERIOD FOR SYSTEM_TIME (StartTime, EndTime)

GO

 

ALTER TABLE [msdb].[dbo].[sysjobhistory]

ADD CONSTRAINT PK_sysjobhistory PRIMARY KEY (instance_id, job_id, step_id)

GO

 

ALTER TABLE [msdb].[dbo].[sysjobhistory]

SET(SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[sysjobhistoryall],DATA_CONSISTENCY_CHECK = ON, HISTORY_RETENTION_PERIOD = 1 MONTH))

GO

 

 스크립트를 살펴보면 PK_sysjobhistory라는 기본 키가jobhistory 테이블에 추가되고 변경사항을  추적하는데 필요한  개의 열을 추가한 것을   있다작업이 완료되었으면 Managed Instance 기록 정리 작업을 실행하면 변경 사항이 보존되는지 여부를 테스트   있다아래 스크립트르 차례로 실행하여 시뮬레이션   있다.

EXEC msdb.dbo.sp_purge_jobhistory

 

기존 sysjobhistory 테이블에서 작업 기록이 삭제되면 sysjobhistoryall 테이블에서 삭제된 작업 기록  확인할  있다.

select * from msdb.dbo.sysjobhistoryall

 

 

 

2018-10-08 / Sungwook Kang / http://sqlmvp.kr

 

Azure SQL, Managed Instance, Azure SQL Agent, jobhistory, sysjobhistory, SQL Agent



출처: https://sqlmvp.tistory.com/1287?category=663684 [Database Lab]
No. Subject Author Date Views
Notice [IT재직자] 개강임박!! 올해 마지막 무료 및 국비지원 교육 (JAVA, 리눅스 기초/고급 , CCNA, CCIE 등) 코난(김대우) 2022.12.02 125
Notice 2022년 11월 SQLER의 강좌 업데이트 리스트 코난(김대우) 2022.12.01 25
Notice 2022 공개SW 페스티벌 - Open Up 코난(김대우) 2022.12.01 15
2183 SQL Server Worker Thread 기본 계산 jevida(강성욱) 2019.09.18 1427
2182 SQL Linux의 fsync 및 버퍼된 IO (버퍼된 쓰기중 오류가 발생하였을때 파일은 유효할까?) jevida(강성욱) 2019.09.17 1261
2181 SQL Server와 SQL Linux에서 인스턴스 파일 초기화 차이점 jevida(강성욱) 2019.09.14 1302
2180 BCP 실행시 동일 세션에서 여러개의 BULK INSERT 문으로 표시되는 이유 jevida(강성욱) 2019.09.13 1390
2179 삭제된 AD 그룹 계정으로 SQL Server 로그인 사례 (로그인 그룹 삭제 후 조치해야할 사항) jevida(강성욱) 2019.09.12 1182
2178 QPI(Query Performance Insights) 라이브러리를 사용하여 Azure SQL Managed Instance의 로그쓰기 사용량 확인 jevida(강성욱) 2019.09.11 1089
2177 ODBC 드라이버를 사용하여 SQL Server에서 Azure CosmosDB 쿼리 실행 jevida(강성욱) 2019.09.10 1139
2176 Azure SQL Managed Instance에서 로컬 스토리지 사용량 모니터링 jevida(강성욱) 2019.09.09 1195
2175 SQL Server Enterprise Edition 에서 CPU를 40 Core 이상 사용하지 못하는 현상 jevida(강성욱) 2019.09.04 1302
2174 SQL Server Agent Job에서 sysploicy_purge_history 작업실패 jevida(강성욱) 2019.09.04 1362
2173 where절 case관련... BGT051 2019.09.03 1418
2172 SQL Server에서 테이블 이름을 변경하지 않고 테이터만 교체하기 jevida(강성욱) 2019.05.03 2024
2171 SQL Server master 데이터베이스 정리 jevida(강성욱) 2019.04.23 4805
2170 SQL Server 프로토콜과 SQLCMD를 사용한 연결 jevida(강성욱) 2019.04.23 1666
2169 SQL Server Edition 다운그레이드 후 확인사항 [1] jevida(강성욱) 2019.04.23 1587
2168 AlwaysOn 구성환경에서 Server Role 체크 후 Job Agent 실행 중지하기 jevida(강성욱) 2019.04.23 954
2167 SSRS에서 E-mail 세팅시 SSL 사용 유무 수정하기 jevida(강성욱) 2019.03.26 893
2166 SQL Linux Instance Name 변경 jevida(강성욱) 2019.03.26 782
2165 SQL Linux 업그레이드 jevida(강성욱) 2019.03.26 1027
» Azure SQL Managed Instance 에서 SQL Agent의 Job history 기록 보관하기 jevida(강성욱) 2019.03.26 890





XE Login

테스트 팝업
Close