AlwaysOn 구성환경에서 Server Role 체크 후 Job Agent 실행 중지하기
AlwaysOn 구성환경에서 Server Role 체크 후 Job Agent 실행 중지하기
· Version : SQL Server
SQL Server에서 AlwaysOn을 구성하였을때, Failover 를 대비하여 Secondary 서버에서도 Primary서버와 동일하게 계정, Job Agent 등이 구성되어 있어야 한다. 그런데 Secondary의 경우 DB가 동기화 되고 있는 대기 서버이기 때문에 Job Agent를 Primary와 동일하게 설정하면 Secondary에서 Job 실행 시 Job Fail이 발생한다. 또한 Secondary에서 일부 Job 의 경우 실행이 되지 말아야 할 것들이 있다. 아래 스크립트는 AlwaysOn 의 role을 확인하여 서버가 Primary일 때만 Job Agent가 수행되도록 한다. 각각의 Job Agent의 첫 번째 단계에 추가하여 Primary Role이 아닐때 Job 수행을 중지하도록 한다.
DECLARE @SERVER_ROLE nvarchar(50)
SELECT @SERVER_ROLE = A.ROLE_DESC FROM sys.dm_hadr_availability_replica_states AS A INNER JOIN sys.availability_groups AS B ON A.GROUP_ID = B.GROUP_ID WHERE A.IS_LOCAL = 1
IF @SERVER_ROLE <> 'PRIMARY' EXEC msdb.dbo.sp_stop_job N'Job Name' ; |
Secondary에서 Job 이 실행되었을때, Role을 확인하는 부분이 있어 Job이 중지된것을 확인할 수 있다.
[참고자료]
2019-04-10 / Sungwook Kang / http://sungwookkang.com
SQL Server, AlwaysOn, Job Agent, sys.dm_hadr_availability_replica_states, AG Role check