SQL Server/SQL Server Tip

AlwaysOn 구성환경에서 Server Role 체크 후 Job Agent 실행 중지하기

SungWookKang 2019. 4. 11. 00:14
반응형

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이 중지된것을 확인할 수 있다.

 

[참고자료]

https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-stop-job-transact-sql?view=sql-server-2017

 

2019-04-10 / Sungwook Kang / http://sungwookkang.com

 

SQL Server, AlwaysOn,  Job Agent, sys.dm_hadr_availability_replica_states, AG Role check

반응형