SQL Server 에이전트
적용 대상: SQL Server Azure SQL Managed Instance
이 문서에서는 SQL Server 및 Azure SQL Managed Instance에서 예약된 관리 작업(작업이라고 함)을 실행하는 Microsoft Windows 서비스인 SQL Server 에이전트 대한 개요를 제공합니다.
Important
현재 Azure SQL Managed Instance에서는 SQL Server 에이전트 기능이 대부분 지원됩니다. 자세한 내용은 SQL Server와 Azure SQL Managed Instance 간의 T-SQL 차이점을 참조하세요.
SQL Server 에이전트 이점
SQL Server 에이전트는 SQL Server를 사용하여 작업 정보를 저장합니다. 각각의 작업에는 하나 이상의 작업 단계가 포함됩니다. 각 단계에는 데이터베이스 백업과 같은 자체 작업이 포함됩니다.
SQL Server 에이전트는 특정 이벤트에 대한 응답이나 요청에 따라 일정에 있는 작업을 실행할 수 있습니다. 예를 들어 평일 근무 시간 이후에 모든 회사 서버를 백업하려는 경우 이 작업을 자동화할 수 있습니다. 월요일부터 금요일까지 22:00 이후에 백업을 실행하도록 예약합니다. 백업에 문제가 발생하면 SQL Server 에이전트는 이벤트를 기록하고 사용자에게 알릴 수 있습니다.
참고 항목
기본적으로 SQL Server 에이전트 서비스는 자동으로 시작되도록 사용자가 명시적으로 선택하지 않으면 SQL Server 설치 시 사용되지 않습니다.
SQL Server 에이전트 구성 요소
SQL Server 에이전트에서는 다음 구성 요소를 사용하여 수행될 태스크, 태스크를 수행할 시기 및 태스크의 성공 또는 실패를 보고하는 방법을 정의합니다.
SQL Server Configuration Manager를 사용하여 SQL Server 에이전트 서비스를 관리하고 SQL Server Management Studio(SSMS)를 사용하여 그래픽 사용자 인터페이스에서 SQL Server 에이전트 속성, 작업, 경고, 연산자 및 프록시를 쉽게 관리할 수 있습니다.
작업
작업은 SQL Server 에이전트가 수행하는 지정된 일련의 작업입니다. 작업을 사용하여 두 번 이상 실행할 수 있으며 성공 또는 실패를 모니터링하는 관리 작업을 정의합니다. 하나의 로컬 서버 또는 여러 원격 서버에서 작업을 실행할 수 있습니다.
Important
SQL Server 장애 조치(failover) 클러스터 인스턴스에서 장애 조치(failover) 이벤트가 발생한 시점에 실행 중인 SQL Server 에이전트 작업은 다른 장애 조치(failover) 클러스터 노드로의 장애 조치(failover) 후 다시 시작되지 않습니다. Hyper-V 노드가 일시 중지될 때 실행되고 있던 SQL Server 에이전트 작업은 일시 중지로 인해 다른 노드로 장애 조치(failover)될 경우 다시 시작되지 않습니다. 시작되었지만 장애 조치(failover) 이벤트로 인해 완료되지 못한 작업은 시작된 것으로 기록되지만 완료 또는 실패의 추가 로그 항목이 표시되지 않습니다. SQL Server 에이전트 작업은 종료되지 않은 것처럼 나타납니다.
여러 가지 방법으로 작업을 실행할 수 있습니다.
하나 이상의 일정에 따라.
하나 이상의 경고에 대한 대응으로.
sp_start_job
저장 프로시저를 실행합니다.
작업의 각 동작은 작업 단계입니다. 예를 들어 Transact-SQL 문을 실행하거나 SSIS 패키지를 실행하거나 Analysis Services 서버로 명령을 실행하는 것으로 작업 단계를 구성할 수 있습니다. 작업 단계는 작업의 일부로 관리됩니다.
각 작업 단계는 특정 보안 컨텍스트에서 실행됩니다. Transact-SQL을 사용하는 작업 단계의 경우 EXECUTE AS 문을 사용하여 해당 작업 단계에 대한 보안 컨텍스트를 설정합니다. 다른 작업 단계 유형의 경우에는 프록시 계정을 사용하여 해당 작업 단계에 대한 보안 컨텍스트를 설정합니다.
sp_help_job 시스템 저장 프로시저를 사용하여 특정 작업에 대한 정보를 확인합니다. dbo.sysjobs 시스템 테이블을 사용하여 작업에 대한 정보를 볼 수 있습니다. 예를 들어 다음 T-SQL(Transact-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 서비스를 시작해야 합니다.
Important
호출기 및 Net Send 옵션은 SQL Server 향후 버전의 SQL Server 에이전트에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요.
전자 메일 또는 호출기를 사용하여 운영자에게 알림을 보내려면 데이터베이스 메일을 사용하도록 SQL Server 에이전트를 구성해야 합니다. 자세한 내용은 데이터베이스 메일을 참조하세요.
연산자를 개인 그룹의 별칭으로 정의할 수 있습니다. 이런 방법으로 해당 별칭에 속하는 모든 멤버는 동시에 알림을 받습니다. 자세한 내용은 연산자를 참조하세요.
SQL Server 에이전트 관리 보안
SQL Server 에이전트는 msdb
데이터베이스의 SQLAgentUserRole, SQLAgentReaderRole 및 SQLAgentOperatorRole 고정 데이터베이스 역할을 사용하여 sysadmin 고정 서버 역할의 멤버가 아닌 사용자의 SQL Server 에이전트에 대한 액세스를 제어합니다. 이러한 고정 데이터베이스 역할 외에도 하위 시스템 및 프록시를 사용하면 데이터베이스 관리자가 각 작업 단계가 해당 작업을 수행하는 데 필요한 최소 권한으로 실행되도록 할 수 있습니다.
Roles
msdb
에서 SQLAgentUserRole, SQLAgentReaderRole 및 SQLAgentOperatorRole 고정 데이터베이스 역할의 멤버와 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 쿼리 | 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 에이전트 구성합니다.
정기적으로 발생하는 관리 작업 또는 서버 이벤트와 이러한 작업 또는 이벤트를 프로그래밍 방식으로 관리할 수 있는지 여부를 설정합니다. 태스크가 예측 가능한 단계 순서를 포함하고 특정 시간에 또는 특정 사건에 대한 응답으로 발생하는 경우 자동화될 수 있습니다.
SQL Server Management Studio, Transact-SQL 스크립트 또는 SMO(SQL Server 관리 개체)를 사용하여 작업, 일정, 경고, 운영자 세트를 정의합니다. 자세한 내용은 작업 만들기를 참조하세요.
정의한 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를 사용하지 않도록 설정할 수 있습니다. #NOSQLPS
을(를) 추가할 수 있는 PowerShell 형식의 작업 단계 첫 번째 줄에서 SQL 에이전트가 SQLPS 모듈을 자동으로 로드하지 못하도록 합니다. 이제 SQL 에이전트 작업이 컴퓨터에 설치된 PowerShell 버전을 실행한 다음, 원하는 다른 PowerShell 모듈을 사용할 수 있습니다.
SQL 에이전트 작업 단계에서 SqlServer 모듈을 사용하려면 스크립트의 처음 두 줄에 이 코드를 배치할 수 있습니다.
#NOSQLPS
Import-Module -Name SqlServer