다음을 통해 공유


SQL Server 에이전트

적용 대상:SQL ServerAzure SQL Managed Instance

이 문서에서는 SQL Server 및 Azure SQL Managed Instance에서 예약된 관리 작업( 작업이라고 함)을 실행하는 Microsoft Windows 서비스인 SQL Server 에이전트에 대한 개요를 제공합니다.

중요합니다

Azure SQL Managed Instance에서는 현재 대부분의 SQL Server 에이전트 기능이 지원되지만, 모든 기능이 지원되는 것은 아닙니다. 자세한 내용은 Azure SQL Managed Instance의 T-SQL과 SQL Server의 차이점 또는 SQL Managed Instance의 SQL 에이전트 작업 제한을 참조하세요.

SQL Server 에이전트의 이점

SQL Server 에이전트는 SQL Server를 사용하여 작업 정보를 저장합니다. 작업에는 하나 이상의 작업 단계가 포함됩니다. 각 단계에는 데이터베이스 백업과 같은 자체 작업이 포함됩니다.

SQL Server 에이전트는 특정 이벤트 또는 요청 시 일정에 따라 작업을 실행할 수 있습니다. 예를 들어 평일마다 모든 회사 서버를 백업하려는 경우 이 작업을 자동화할 수 있습니다. 월요일부터 금요일까지 22:00 이후에 백업을 실행하도록 예약합니다. 백업에 문제가 발생하면 SQL Server 에이전트가 이벤트를 기록하고 사용자에게 알릴 수 있습니다.

비고

기본적으로 SQL Server 에이전트 서비스는 사용자가 서비스를 자동으로 시작하도록 명시적으로 선택하지 않는 한 SQL Server가 설치될 때 사용하지 않도록 설정됩니다.

SQL Server 에이전트 구성 요소

SQL Server 에이전트는 다음 구성 요소를 사용하여 수행할 작업, 태스크 수행 시기 및 태스크의 성공 또는 실패를 보고하는 방법을 정의합니다.

SQL Server 구성 관리자를 사용하여 SQL Server 에이전트 서비스를 관리하고 SSMS(SQL Server Management Studio)를 사용하여 그래픽 사용자 인터페이스에서 SQL Server 에이전트 속성, 작업, 경고, 연산자 및 프록시를 쉽게 관리할 수 있습니다.

직업

작업은 SQL Server 에이전트가 수행하는 지정된 일련의 작업입니다. 작업을 사용하여 한 번 이상 실행될 수 있고 성공 또는 실패를 모니터링할 수 있는 관리 작업을 정의합니다. 하나의 로컬 서버 또는 여러 원격 서버에서 작업을 실행할 수 있습니다.

중요합니다

SQL Server 장애 조치(failover) 클러스터 인스턴스에서 장애 조치(failover) 이벤트 발생 시 실행 중인 SQL Server 에이전트 작업은 다른 장애 조치(failover) 클러스터 노드로 장애 조치(failover) 후 다시 시작되지 않습니다. 일시 중지로 인해 다른 노드로 장애 조치(failover)가 발생하는 경우 Hyper-V 노드가 일시 중지될 때 실행되는 SQL Server 에이전트 작업은 다시 시작되지 않습니다. 장애 조치(failover) 이벤트로 인해 시작되지만 완료에 실패하는 작업은 시작으로 기록되지만 완료 또는 실패에 대한 추가 로그 항목은 표시되지 않습니다. 이러한 시나리오에서 SQL Server 에이전트 작업은 종료되지 않은 것으로 보입니다.

여러 가지 방법으로 작업을 실행할 수 있습니다.

  • 하나 이상의 일정에 따라.

  • 하나 이상의 경고에 대한 응답입니다.

  • 저장 프로시저를 sp_start_job 실행합니다.

작업의 각 작업은 작업 단계입니다. 예를 들어 작업 단계는 Transact-SQL 문을 실행하거나, SSIS 패키지를 실행하거나, Analysis Services 서버에 명령을 실행하는 것으로 구성될 수 있습니다. 작업 단계는 작업의 일부로 관리됩니다.

각 작업 단계는 특정 보안 컨텍스트에서 실행됩니다. Transact-SQL을 사용하는 작업 단계의 경우 EXECUTE AS 문을 사용하여 작업 단계에 대한 보안 컨텍스트를 설정합니다. 다른 유형의 작업 단계의 경우 프록시 계정을 사용하여 작업 단계에 대한 보안 컨텍스트를 설정합니다.

sp_help_job 시스템 저장 프로시저를 사용하여 특정 작업에 대한 정보를 확인합니다. dbo.sysjobs 시스템 테이블을 사용하여 작업에 대한 정보를 볼 수 있습니다. 예를 들어 다음 Transact-SQL(T-SQL) 문을 사용하여 서버의 모든 작업에 대한 정보를 볼 수 있습니다.

USE MSDB
GO
SELECT job_id, [name] FROM dbo.sysjobs;

일정

일정은 작업이 실행되는 시기를 지정합니다. 동일한 일정에 따라 둘 이상의 작업을 실행할 수 있으며, 둘 이상의 일정을 동일한 작업에 적용할 수 있습니다. 일정은 작업이 실행되는 시기에 대해 다음 조건을 정의할 수 있습니다.

  • SQL Server 에이전트가 시작될 때마다.

  • 컴퓨터의 CPU 사용률이 유휴 상태로 정의한 수준에 있을 때마다

  • 한 번, 특정 날짜 및 시간에.

  • 정기적인 일정에 따라.

자세한 내용은 만들기 및 작업에 일정 첨부를 참조하세요.

경고

경고는 특정 이벤트에 대한 자동 응답입니다. 예를 들어 이벤트는 시작하는 작업 또는 특정 임계값에 도달하는 시스템 리소스일 수 있습니다. 경고가 발생하는 조건을 정의합니다.

경고는 다음 조건 중 하나에 응답할 수 있습니다.

  • SQL Server 이벤트

  • SQL Server 성능 조건

  • SQL Server 에이전트가 실행 중인 컴퓨터의 Microsoft WMI(Windows Management Instrumentation) 이벤트

경고는 다음 작업을 수행할 수 있습니다.

  • 하나 이상의 운영자에게 알림

  • 작업 실행

자세한 내용은 경고를 참조하세요.

운영자

운영자는 하나 이상의 SQL Server 인스턴스 유지 관리를 담당하는 개인에 대한 연락처 정보를 정의합니다. 일부 기업에서는 운영자 책임이 한 개인에게 할당됩니다. 서버가 여러 개인 기업에서는 여러 사람들이 운영자 책임을 공유할 수 있습니다. 운영자는 보안 정보를 포함하지 않으며 보안 주체를 정의하지 않습니다.

SQL Server는 다음을 통해 운영자에게 경고를 알릴 수 있습니다.

  • 이메일

  • 호출기(이메일을 통해)

  • net send (네트워크 메시징 명령)

비고

net send를 사용하여 알림을 보내려면 SQL Server 에이전트가 있는 컴퓨터에서 Windows Messenger 서비스를 시작해야 합니다.

중요합니다

호출기 및 net send 옵션은 향후 SQL Server 버전에서 SQL Server 에이전트에서 제거됩니다. 새 개발 작업에서 이러한 기능을 사용하지 말고 현재 이러한 기능을 사용하는 애플리케이션을 수정할 계획입니다.

전자 메일 또는 호출기를 사용하여 운영자에게 알림을 보내려면 데이터베이스 메일을 사용하도록 SQL Server 에이전트를 구성해야 합니다. 자세한 내용은 데이터베이스 메일을 참조하세요.

연산자를 개인 그룹의 별칭으로 정의할 수 있습니다. 이러한 방식으로 해당 별칭의 모든 멤버는 동시에 확인되지 않습니다. 자세한 내용은 연산자를 참조하세요.

SQL Server 에이전트 관리에 대한 보안

SQL Server 에이전트는 데이터베이스의 SQLAgentUserRole, SQLAgentReaderRoleSQLAgentOperatorRole 고정 데이터베이스 역할을 msdb 사용하여 sysadmin 고정 서버 역할의 멤버가 아닌 사용자의 SQL Server 에이전트에 대한 액세스를 제어합니다. 이러한 고정 데이터베이스 역할 외에도 하위 시스템 및 프록시를 사용하면 데이터베이스 관리자가 각 작업 단계가 해당 작업을 수행하는 데 필요한 최소 권한으로 실행되도록 할 수 있습니다.

역할

SQLAgentUserRole, SQLAgentReaderRoleSQLAgentOperatorRole 고정 데이터베이스 역할msdb의 멤버 및 sysadmin 고정 서버 역할의 멤버는 SQL Server 에이전트에 액세스할 수 있습니다. 이러한 역할에 속하지 않는 사용자는 SQL Server 에이전트를 사용할 수 없습니다. SQL Server 에이전트에서 사용하는 역할에 대한 자세한 내용은 SQL Server 에이전트 보안 구현을 참조하세요.

하위 시스템

하위 시스템은 작업 단계에서 사용할 수 있는 기능을 나타내는 미리 정의된 개체입니다. 각 프록시는 하나 이상의 하위 시스템에 액세스할 수 있습니다. 하위 시스템은 프록시에서 사용할 수 있는 기능에 대한 액세스를 구분하기 때문에 보안을 제공합니다. 각 작업 단계는 Transact-SQL 작업 단계를 제외하고 프록시의 컨텍스트에서 실행됩니다. Transact-SQL 작업 단계에서는 EXECUTE AS 명령을 사용하여 보안 컨텍스트를 작업의 소유자로 설정합니다.

SQL Server는 다음 표에 나열된 하위 시스템을 정의합니다.

하위 시스템 이름 설명
Microsoft ActiveX 스크립트 ActiveX 스크립팅 작업 단계를 실행합니다.

경고 ActiveX 스크립팅 하위 시스템은 이후 버전의 Microsoft SQL Server에서 SQL Server 에이전트에서 제거됩니다. 새 개발 작업에서 이 기능을 사용하지 말고 현재 이 기능을 사용하는 애플리케이션을 수정할 계획입니다.
운영 체제(CmdExec) 실행 프로그램을 실행합니다.
PowerShell PowerShell 스크립팅 작업 단계를 실행합니다.
복제 배포자 복제 배포 에이전트를 활성화하는 작업 단계를 실행합니다.
복제 병합 복제 병합 에이전트를 활성화하는 작업 단계를 실행합니다.
복제 대기열 판독기 복제 큐 판독기 에이전트를 활성화하는 작업 단계를 실행합니다.
복제 스냅샷 복제 스냅샷 에이전트를 활성화하는 작업 단계를 실행합니다.
복제 트랜잭션 로그 판독기 복제 로그 판독기 에이전트를 활성화하는 작업 단계를 실행합니다.
Analysis Services 명령 Analysis Services 명령을 실행합니다.
분석 서비스 쿼리 Analysis Services 쿼리를 실행합니다.
SSIS 패키지 실행 SSIS 패키지를 실행합니다.

비고

Transact-SQL 작업 단계에서 프록시를 사용하지 않으므로 Transact-SQL 작업 단계에 대한 SQL Server 에이전트 하위 시스템이 없습니다.

SQL Server 에이전트는 프록시의 보안 주체에 일반적으로 작업 단계에서 작업을 실행할 수 있는 권한이 있는 경우에도 하위 시스템 제한을 적용합니다. 예를 들어 sysadmin 고정 서버 역할의 멤버인 사용자의 프록시는 사용자가 SSIS 패키지를 실행할 수 있더라도 프록시가 SSIS 하위 시스템에 액세스할 수 없는 한 SSIS 작업 단계를 실행할 수 없습니다.

프록시

SQL Server 에이전트는 프록시를 사용하여 보안 컨텍스트를 관리합니다. 둘 이상의 작업 단계에서 프록시를 사용할 수 있습니다. sysadmin 고정 서버 역할의 멤버는 프록시를 만들 수 있습니다.

각 프록시는 보안 자격 증명에 해당합니다. 각 프록시는 하위 시스템 집합 및 로그인 집합과 연결할 수 있습니다. 프록시는 프록시와 연결된 하위 시스템을 사용하는 작업 단계에만 사용할 수 있습니다. 특정 프록시를 사용하는 작업 단계를 만들려면 작업 소유자는 해당 프록시와 연결된 로그인 또는 프록시에 대한 무제한 액세스 권한이 있는 역할의 멤버를 사용해야 합니다. sysadmin 고정 서버 역할의 멤버는 프록시에 무제한으로 액세스할 수 있습니다. SQLAgentUserRole, SQLAgentReaderRole 또는 SQLAgentOperatorRole의 멤버는 특정 액세스 권한이 부여된 프록시만 사용할 수 있습니다. 이러한 SQL Server 에이전트 고정 데이터베이스 역할의 멤버인 각 사용자에게 특정 프록시에 대한 액세스 권한을 부여해야 사용자가 해당 프록시를 사용하는 작업 단계를 만들 수 있습니다.

관리 자동화

다음 단계를 사용하여 SQL Server 관리를 자동화하도록 SQL Server 에이전트를 구성합니다.

  1. 정기적으로 발생하는 관리 작업 또는 서버 이벤트와 이러한 태스크 또는 이벤트를 프로그래밍 방식으로 관리할 수 있는지 여부를 설정합니다. 태스크는 예측 가능한 단계 시퀀스를 포함하고 특정 시간에 또는 특정 이벤트에 대한 응답으로 발생하는 경우 자동화에 적합한 후보입니다.

  2. SQL Server Management Studio, Transact-SQL 스크립트 또는 SMO(SQL Server 관리 개체)를 사용하여 작업, 일정, 경고 및 연산자 집합을 정의합니다. 자세한 내용은 작업 만들기를 참조하세요.

  3. 정의한 SQL Server 에이전트 작업을 실행합니다.

비고

SQL Server의 기본 인스턴스에 대해 SQL Server 서비스의 이름은 SQLSERVERAGENT입니다. 명명된 인스턴스의 경우 SQL Server 에이전트 서비스의 이름은 SQLAgent$instancename입니다.

SQL Server의 여러 인스턴스를 실행하는 경우 다중 서버 관리를 사용하여 모든 인스턴스에서 공통 작업을 자동화할 수 있습니다. 자세한 내용은 엔터프라이즈에서 자동화된 관리를 참조하세요.

다음 작업을 사용하여 SQL Server 에이전트를 시작합니다.

설명 조항
SQL Server 에이전트를 구성하는 방법을 설명합니다. SQL Server 에이전트 구성
SQL Server 에이전트 서비스를 시작, 중지 및 일시 중지하는 방법을 설명합니다. SQL Server 에이전트 서비스 시작, 중지 또는 일시 중지
SQL Server 에이전트 서비스에 대한 계정을 지정하기 위한 고려 사항에 대해 설명합니다. SQL Server 에이전트 서비스에 대한 계정 선택
SQL Server 에이전트 오류 로그를 사용하는 방법을 설명합니다. SQL Server 에이전트 오류 로그
성능 개체를 사용하는 방법을 설명합니다. 성능 개체 사용
작업 만들기, 경고 및 운영자를 사용하여 SQL Server 인스턴스의 관리를 자동화하는 유틸리티인 유지 관리 계획 마법사에 대해 설명합니다. 유지 관리 계획 마법사 사용
SQL Server 에이전트를 사용하여 관리 작업을 자동화하는 방법을 설명합니다. 관리 태스크 자동화(SQL Server 에이전트)

NOSQLPS

SQL Server 2019부터 SQLPS를 사용하지 않도록 설정할 수 있습니다. PowerShell 유형의 작업 단계 첫 번째 줄에 #NOSQLPS를 추가하면 SQL 에이전트가 SQLPS 모듈을 자동으로 로드하는 것을 중지합니다. 이제 SQL 에이전트 작업이 컴퓨터에 설치된 PowerShell 버전을 실행한 다음 원하는 다른 PowerShell 모듈을 사용할 수 있습니다.

SQL 에이전트 작업 단계에서 SqlServer 모듈 을 사용하려면 스크립트의 처음 두 줄에 이 코드를 배치할 수 있습니다.

#NOSQLPS
Import-Module -Name SqlServer