SQL Server 에이전트SQL Server Agent

SQL ServerSQL Server 에이전트는 에서 작업 SQL Server 2017SQL Server 2017이라고 하는 일정이 지정된 관리 태스크를 실행하는 Microsoft Windows 서비스입니다. Agent is a Microsoft Windows service that executes scheduled administrative tasks, which are called jobs in SQL Server 2017SQL Server 2017.

항목 내용In This Topic

SQL Server 에이전트의 이점Benefits of SQL Server Agent

SQL ServerSQL Server 에이전트에서는 SQL ServerSQL Server 를 사용하여 작업 정보를 저장합니다. Agent uses SQL ServerSQL Server to store job information. 작업에는 하나 이상의 작업 단계가 포함됩니다.Jobs contain one or more job steps. 각 단계에는 자체 태스크(예: 데이터베이스 백업)가 포함됩니다.Each step contains its own task, for example, backing up a database.

SQL ServerSQL Server 에이전트는 특정 이벤트에 대한 응답이나 요청에 따라 일정에 있는 작업을 실행할 수 있습니다. Agent can run a job on a schedule, in response to a specific event, or on demand. 예를 들어 평일 근무 시간 이후에 회사 서버를 모두 백업하려는 경우 이 태스크를 자동화할 수 있습니다.For example, if you want to back up all the company servers every weekday after hours, you can automate this task. 월요일부터 금요일까지 밤 10시 이후 백업이 실행되도록 일정을 만듭니다. 이 백업에 문제가 발생하면 SQL Server 에이전트가 이 이벤트를 기록하여 사용자에게 알릴 수 있습니다.Schedule the backup to run after 22:00 Monday through Friday; if the backup encounters a problem, SQL Server Agent can record the event and notify you.

참고

기본적으로 SQL ServerSQL Server 에이전트 서비스는 자동으로 시작되도록 사용자가 명시적으로 선택하지 않으면 SQL Server 2017SQL Server 2017 설치 시 해제됩니다.By default, the SQL ServerSQL Server Agent service is disabled when SQL Server 2017SQL Server 2017 is installed unless the user explicitly chooses to autostart the service.

SQL Server 에이전트 구성 요소SQL Server Agent Components

SQL ServerSQL Server 에이전트에서는 다음 구성 요소를 사용하여 수행될 태스크, 태스크를 수행할 시기 및 태스크의 성공 또는 실패를 보고하는 방법을 정의합니다. Agent uses the following components to define the tasks to be performed, when to perform the tasks, and how to report the success or failure of the tasks.

에서Jobs

작업SQL ServerSQL Server 에이전트에서 수행하도록 지정된 일련의 동작입니다.A job is a specified series of actions that SQL ServerSQL Server Agent performs. 작업을 사용하면 한 번 이상 실행되고 성공과 실패에 대해 모니터링될 수 있는 관리 태스크를 정의할 수 있습니다.Use jobs to define an administrative task that can be run one or more times and monitored for success or failure. 작업은 한 대의 로컬 서버나 다중 원격 서버에서 실행될 수 있습니다.A job can run on one local server or on multiple remote servers.

중요

SQL ServerSQL Server 장애 조치(failover) 클러스터 인스턴스에서 장애 조치 이벤트가 발생할 때 실행하고 있던 SQL ServerSQL Server 에이전트 작업은 다른 장애 조치 클러스터 노드로 장애가 조치된 후 다시 시작되지 않습니다. Agent jobs that are running at the time of a failover event on a SQL ServerSQL Server failover cluster instance do not resume after failover to another failover cluster node. SQL ServerSQL Server Hyper-V 노드가 일시 중지될 때 실행되고 있던 에이전트 작업은 일시 중지로 인해 다른 노드로 장애 조치(failover)될 경우 다시 시작되지 않습니다. Agent jobs that are running at the time a Hyper-V node is paused do not resume if the pause causes a failover to another node. 시작되었지만 장애 조치(failover) 이벤트로 인해 완료되지 못한 작업은 시작된 것으로 기록되지만 완료 또는 실패의 추가 로그 항목이 표시되지 않습니다.Jobs that begin but fail to complete because of a failover event are logged as started, but do not show additional log entries for completion or failure. SQL ServerSQL Server 에이전트 작업은 종료되지 않은 것처럼 나타납니다. Agent jobs in these scenarios appear to have never ended.

작업을 실행하는 방법은 다음과 같습니다.You can run jobs in several ways:

  • 1회 이상의 일정에 따라 실행됩니다.According to one or more schedules.

  • 하나 이상의 경고에 응답하여 실행됩니다.In response to one or more alerts.

  • sp_start_job 저장 프로시저를 실행하는 방법으로 실행됩니다.By executing the sp_start_job stored procedure.

작업 내 각 동작은 작업 단계입니다.Each action in a job is a job step. 예를 들어 Transact-SQLTransact-SQL 문을 실행하거나 SSISSSIS 패키지를 실행하거나 Analysis Services 서버로 명령을 실행하는 것으로 작업 단계를 구성할 수 있습니다.For example, a job step might consist of running a Transact-SQLTransact-SQL statement, executing an SSISSSIS package, or issuing a command to an Analysis Services server. 작업 단계는 작업의 일부로 관리됩니다.Job steps are managed as part of a job.

각 작업 단계는 특정 보안 컨텍스트에서 실행됩니다.Each job step runs in a specific security context. Transact-SQLTransact-SQL을 사용하는 작업 단계의 경우 EXECUTE AS 문을 사용하여 해당 작업 단계에 대한 보안 컨텍스트를 설정합니다.For job steps that use Transact-SQLTransact-SQL, use the EXECUTE AS statement to set the security context for the job step. 다른 작업 단계 유형의 경우에는 프록시 계정을 사용하여 해당 작업 단계에 대한 보안 컨텍스트를 설정합니다.For other types of job steps, use a proxy account to set the security context for the job step.

일정Schedules

일정 은 작업이 실행되는 시기를 지정합니다.A schedule specifies when a job runs. 같은 일정으로 둘 이상의 작업을 실행할 수 있으며 같은 작업에 둘 이상의 일정을 적용할 수 있습니다.More than one job can run on the same schedule, and more than one schedule can apply to the same job. 일정은 작업이 실행되는 시간에 대해 다음 조건을 정의할 수 있습니다.A schedule can define the following conditions for the time when a job runs:

  • SQL ServerSQL Server 에이전트가 시작할 때마다Whenever SQL ServerSQL Server Agent starts.

  • 컴퓨터의 CPU 사용률이 유휴로 정의한 수준에 있을 때마다Whenever CPU utilization of the computer is at a level you have defined as idle.

  • 특정 날짜와 특정 시간에 한 번One time, at a specific date and time.

  • 되풀이되는 일정에 따라On a recurring schedule.

자세한 내용은 일정을 만들고 작업에 연결을 참조하세요.For more information, see Create and Attach Schedules to Jobs.

경고Alerts

경고 는 특정 이벤트에 대한 자동 응답입니다.An alert is an automatic response to a specific event. 예를 들어 이벤트는 시작되는 작업 또는 특정 임계값에 도달한 시스템 리소스일 수 있습니다.For example, an event can be a job that starts or system resources that reach a specific threshold. 경고가 발생할 조건을 정의합니다.You define the conditions under which an alert occurs.

경고는 다음 조건 중 하나에 대해 응답할 수 있습니다.An alert can respond to one of the following conditions:

  • SQL ServerSQL Server 이벤트 events

  • SQL ServerSQL Server 성능 조건 performance conditions

  • SQL Server 에이전트가 실행 중인 컴퓨터의 Microsoft WMI(Windows Management Instrumentation) 이벤트Microsoft Windows Management Instrumentation (WMI) events on the computer where SQL Server Agent is running

경고는 다음 동작을 수행할 수 있습니다.An alert can perform the following actions:

  • 한 명 이상의 운영자에게 알림Notify one or more operators

  • 작업 실행Run a job

자세한 내용은 경고를 참조하세요.For more information, see Alerts.

연산자Operators

운영자 는 하나 이상의 SQL ServerSQL Server인스턴스를 유지 관리하는 개인에 대한 연락처 정보를 정의합니다.An operator defines contact information for an individual responsible for the maintenance of one or more instances of SQL ServerSQL Server. 일부 기업의 경우 운영자의 업무는 한 명에게 할당되기도 합니다.In some enterprises, operator responsibilities are assigned to one individual. 다중 서버를 사용하는 기업의 경우에는 여러 명이 운영자의 업무를 분담할 수 있습니다.In enterprises with multiple servers, many individuals can share operator responsibilities. 운영자는 보안 정보가 보유하지 않으며 보안 주체를 정의하지 않습니다.An operator does not contain security information, and does not define a security principal.

SQL ServerSQL Server 는 다음 중 하나 이상을 통해 운영자에게 경고를 알릴 수 있습니다. can notify operators of alerts through one or more of the following:

  • 전자 메일E-mail

  • 호출기(전자 메일 사용)Pager (through e-mail)

  • Net Sendnet send

참고

net send를 사용하여 알림을 보내려면 SQL ServerSQL Server 에이전트가 상주하는 컴퓨터에서 Windows Messenger 서비스를 시작해야 합니다.To send notifications by using net send, the Windows Messenger service must be started on the computer where SQL ServerSQL Server Agent resides.

중요

이후 버전에서는 에이전트에서 호출기 및 SQL ServerSQL Server net send SQL ServerSQL Server옵션이 제거됩니다.The Pager and net send options will be removed from SQL ServerSQL Server Agent in a future version of SQL ServerSQL Server. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 응용 프로그램은 수정하세요.Avoid using these features in new development work, and plan to modify applications that currently use these features.

전자 메일 또는 호출기를 사용하여 운영자에게 알림을 보내려면 데이터베이스 메일을 사용하도록 SQL ServerSQL Server 에이전트를 구성해야 합니다.To send notifications to operators by using e-mail or pagers, you must configure SQL ServerSQL Server Agent to use Database Mail. 자세한 내용은 데이터베이스 메일을 참조하세요.For more information, see Database Mail.

개인으로 구성된 그룹의 별칭으로 운영자를 정의할 수 있습니다.You can define an operator as the alias for a group of individuals. 이런 방법으로 해당 별칭에 속하는 모든 멤버는 동시에 알림을 받습니다.In this way, all members of that alias are notified at the same time. 자세한 내용은 운영자를 참조하세요.For more information, see Operators.

SQL Server 에이전트 관리 보안Security for SQL Server Agent Administration

SQL ServerSQL Server 에이전트는 msdb데이터베이스에서 sysadmin고정 서버 역할의 멤버가 아닌 사용자의 에이전트에 대한 액세스를 제어하는 SQLAgentUserRole , SQLAgentReaderRole SQL ServerSQL ServerSQLAgentOperatorRole 고정 데이터베이스 역할을 사용합니다. Agent uses the SQLAgentUserRole, SQLAgentReaderRole, and SQLAgentOperatorRole fixed database roles in the msdb database to control access to SQL ServerSQL Server Agent for users who are not members of the sysadmin fixed server role. 이러한 고정 데이터베이스 역할 외에도 데이터베이스 관리자는 하위 시스템과 프록시를 사용하여 각 작업 단계가 태스크 수행에 필요한 최소 권한으로 실행되도록 합니다.In addition to these fixed database roles, subsystems and proxies help database administrators ensure that each job step runs with the minimum permissions required to perform its task.

역할Roles

msdbSQLAgentUserRole, SQLAgentReaderRoleSQLAgentOperatorRole고정 데이터베이스 역할 멤버와 sysadmin 고정 서버 역할 멤버는 SQL ServerSQL Server 에이전트에 액세스할 수 있습니다.Members of the SQLAgentUserRole, SQLAgentReaderRole, and SQLAgentOperatorRole fixed database roles in msdb, and members of the sysadmin fixed server role have access to SQL ServerSQL Server Agent. 이러한 역할 중 하나에 속하지 않는 사용자는 SQL ServerSQL Server 에이전트를 사용할 수 없습니다.A user that does not belong to any of these roles cannot use SQL ServerSQL Server Agent. SQL ServerSQL Server 에이전트에서 사용하는 역할에 대한 자세한 내용은 SQL Server 에이전트 보안 구현을 참조하세요.For more information on the roles used by SQL ServerSQL Server Agent, see Implement SQL Server Agent Security.

하위 시스템Subsystems

하위 시스템은 작업 단계에서 사용할 수 있는 기능을 나타내는 미리 정의된 개체입니다.A subsystem is a predefined object that represents functionality that is available to a job step. 각 프록시는 하나 이상의 하위 시스템에 액세스할 수 있습니다.Each proxy has access to one or more subsystems. 하위 시스템은 프록시에 사용할 수 있는 기능에 대한 액세스를 구분하므로 보안을 제공합니다.Subsystems provide security because they delimit access to the functionality that is available to a proxy. Transact-SQLTransact-SQL 작업 단계를 제외한 각 작업 단계는 프록시 컨텍스트에서 실행됩니다.Each job step runs in the context of a proxy, except for Transact-SQLTransact-SQL job steps. Transact-SQLTransact-SQL 작업 단계는 EXECUTE AS 명령을 사용하여 보안 컨텍스트를 설정합니다. job steps use the EXECUTE AS command to set the security context.

SQL ServerSQL Server 에 정의되어 있는 하위 시스템을 나열합니다. defines the subsystems listed in the following table:

하위 시스템 이름Subsystem name DescriptionDescription
Microsoft ActiveX 스크립트Microsoft ActiveX Script ActiveX 스크립팅 작업 단계를 실행합니다.Run an ActiveX scripting job step.

경고 이후 MicrosoftMicrosoft SQL ServerSQL Server 버전에서 ActiveX 스크립팅 하위 시스템이 SQL ServerSQL Server 에이전트에서 제거될 예정입니다.Warning The ActiveX Scripting subsystem will be removed from SQL ServerSQL Server Agent in a future version of MicrosoftMicrosoft SQL ServerSQL Server. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 응용 프로그램은 수정하세요.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.
운영 체제(CmdExec)Operating System (CmdExec) 실행 프로그램을 실행합니다.Run an executable program.
PowerShellPowerShell PowerShell 스크립팅 작업 단계를 실행합니다.Run a PowerShell scripting job step.
복제 배포자Replication Distributor 복제 배포 에이전트를 활성화하는 작업 단계를 실행합니다.Run a job step that activates the replication Distribution Agent.
복제 병합Replication Merge 복제 병합 에이전트를 활성화하는 작업 단계를 실행합니다.Run a job step that activates the replication Merge Agent.
복제 큐 판독기Replication Queue Reader 복제 큐 판독기 에이전트를 활성화하는 작업 단계를 실행합니다.Run a job step that activates the replication Queue Reader Agent.
복제 스냅숏Replication Snapshot 복제 스냅숏 에이전트를 활성화하는 작업 단계를 실행합니다.Run a job step that activates the replication Snapshot Agent.
복제 트랜잭션 로그 판독기Replication Transaction Log Reader 복제 로그 판독기 에이전트를 활성화하는 작업 단계를 실행합니다.Run a job step that activates the replication Log Reader Agent.
Analysis ServicesAnalysis Services 명령 Command Analysis ServicesAnalysis Services 명령을 실행합니다.Run an Analysis ServicesAnalysis Services command.
Analysis ServicesAnalysis Services Query Query Analysis ServicesAnalysis Services 쿼리를 실행합니다.Run an Analysis ServicesAnalysis Services query.
SSISSSIS 패키지 실행 package execution SSISSSIS 패키지를 실행합니다.Run an SSISSSIS package.
참고

Transact-SQLTransact-SQL 작업 단계에서는 프록시를 사용하지 않으므로 SQL ServerSQL Server 작업 단계에 대한 Transact-SQLTransact-SQL 에이전트 하위 시스템이 없습니다.Because Transact-SQLTransact-SQL job steps do not use proxies, there is no SQL ServerSQL Server Agent subsystem for Transact-SQLTransact-SQL job steps.

SQL ServerSQL Server 에이전트는 프록시의 보안 주체에게 일반적으로 작업 단계에서 태스크를 실행할 권한이 있더라도 하위 시스템 제한 설정을 강화합니다. Agent enforces subsystem restrictions even when the security principal for the proxy would normally have permission to run the task in the job step. 예를 들어 사용자가 SSISSSIS 패키지를 실행할 수 있더라도 프록시에서 SSISSSIS 하위 시스템에 액세스할 수 없으면 sysadmin 고정 서버 역할의 멤버인 사용자의 프록시는 SSISSSIS 작업 단계를 실행할 수 없습니다.For example, a proxy for a user that is a member of the sysadmin fixed server role cannot run an SSISSSIS job step unless the proxy has access to the SSISSSIS subsystem, even though the user can run SSISSSIS packages.

프록시Proxies

SQL ServerSQL Server 에이전트는 프록시를 사용하여 보안 컨텍스트를 관리합니다. Agent uses proxies to manage security contexts. 프록시는 둘 이상의 작업 단계에서 사용할 수 있습니다.A proxy can be used in more than one job step. sysadmin 고정 서버 역할의 멤버는 프록시를 만들 수 있습니다.Members of the sysadmin fixed server role can create proxies.

각 프록시는 보안 자격 증명에 해당됩니다.Each proxy corresponds to a security credential. 각 프록시는 하위 시스템 집합 및 로그인 집합과 연결할 수 있으며Each proxy can be associated with a set of subsystems and a set of logins. 프록시는 해당 프록시와 연결된 하위 시스템을 사용하는 작업 단계에서만 사용할 수 있습니다.The proxy can be used only for job steps that use a subsystem associated with the proxy. 특정 프록시를 사용하는 작업 단계를 만들려면 작업 소유자가 해당 프록시와 연결된 로그인을 사용하거나 프록시에 무제한 액세스할 수 있는 역할의 멤버여야 합니다.To create a job step that uses a specific proxy, the job owner must either use a login associated with that proxy or be a member of a role with unrestricted access to proxies. sysadmin 고정 서버 역할의 멤버는 프록시에 무제한 액세스할 수 있습니다.Members of the sysadmin fixed server role have unrestricted access to proxies. SQLAgentUserRole, SQLAgentReaderRole또는 SQLAgentOperatorRole 의 멤버는 특정 액세스 권한이 부여된 프록시만 사용할 수 있습니다.Members of SQLAgentUserRole, SQLAgentReaderRole, or SQLAgentOperatorRole can only use proxies to which they have been granted specific access. 이러한 SQL ServerSQL Server 에이전트 고정 데이터베이스 역할의 멤버인 각 사용자에게 특정 프록시에 대한 액세스 권한을 부여해야만 사용자가 해당 프록시를 사용하는 작업 단계를 만들 수 있습니다.Each user that is a member of any of these SQL ServerSQL Server Agent fixed database roles must be granted access to specific proxies so that the user can create job steps that use those proxies.

다음 단계를 사용하여 SQL ServerSQL Server 관리를 자동화하도록 SQL ServerSQL Server 에이전트를 구성합니다.Use the following steps to configure SQL ServerSQL Server Agent to automate SQL ServerSQL Server administration:

  1. 정기적으로 발생하는 관리 태스크나 서버 이벤트를 설정하고 이러한 작업 또는 이벤트를 프로그래밍 방식으로 관리할 수 있는지 여부를 설정합니다.Establish which administrative tasks or server events occur regularly and whether these tasks or events can be administered programmatically. 태스크가 예측 가능한 단계 순서를 포함하고 특정 시간에 또는 특정 사건에 대한 응답으로 발생하는 경우 자동화될 수 있습니다.A task is a good candidate for automation if it involves a predictable sequence of steps and occurs at a specific time or in response to a specific event.

  2. SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL 스크립트 또는 SMO( SQL ServerSQL Server 관리 개체)를 사용하여 작업, 일정, 경고 및 연산자 집합을 정의합니다.Define a set of jobs, schedules, alerts, and operators by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL scripts, or SQL ServerSQL Server Management Objects (SMO). 자세한 내용은 작업 만들기를 참조하세요.For more information, see Create Jobs.

  3. 정의한 SQL ServerSQL Server 에이전트 작업을 실행합니다.Run the SQL ServerSQL Server Agent jobs you have defined.

참고

SQL ServerSQL Server의 기본 인스턴스의 경우 SQL ServerSQL Server 서비스는 이름이 SQLSERVERAGENT입니다.For the default instance of SQL ServerSQL Server, the SQL ServerSQL Server service is named SQLSERVERAGENT. 명명된 인스턴스의 경우 SQL ServerSQL Server 에이전트 서비스는 이름이 SQLAgent$instancename입니다.For named instances, the SQL ServerSQL Server Agent service is named SQLAgent$instancename.

여러 SQL ServerSQL Server인스턴스를 실행하는 경우 다중 서버 관리를 사용하여 전체 인스턴스에 걸쳐 공통되는 태스크를 자동화할 수 있습니다.If you are running multiple instances of SQL ServerSQL Server, you can use multiserver administration to automate tasks common across all instances. 자세한 내용은 기업 내 관리 자동화를 참조하세요.For more information, see Automated Administration Across an Enterprise.

다음 태스크를 사용하여 SQL ServerSQL Server 에이전트를 시작합니다.Use the following tasks to get started with SQL ServerSQL Server Agent:

DescriptionDescription 항목Topic
SQL Server 에이전트를 구성하는 방법을 설명합니다.Describes how to configure SQL Server Agent. SQL Server 에이전트 구성Configure SQL Server Agent
SQL Server 에이전트 서비스를 시작, 중지 및 일시 중지하는 방법을 설명합니다.Describes how to start, stop, and pause the SQL Server Agent service. SQL Server 에이전트 서비스 시작, 중지 또는 일시 중지Start, Stop, or Pause the SQL Server Agent Service
SQL Server 에이전트 서비스의 계정을 지정하기 위한 고려 사항을 설명합니다.Describes considerations for specifying an account for the SQL Server Agent service. SQL Server 에이전트 서비스의 계정 선택Select an Account for the SQL Server Agent Service
SQL Server 에이전트 오류 로그를 사용하는 방법을 설명합니다.Describes how to use the SQL Server Agent error log. SQL Server 에이전트 오류 로그SQL Server Agent Error Log
성능 개체를 사용하는 방법을 설명합니다.Describes how to use performance objects. 성능 개체 사용Use Performance Objects
SQL Server 인스턴스의 관리를 자동화할 수 있도록 작업, 경고 및 운영자를 만드는 데 사용할 수 있는 유틸리티인 유지 관리 계획 마법사에 대해 설명합니다.Describes the Maintenance Plan Wizard, which is a utility that you can use to help create jobs, alerts, and operators to automate administration of an instance of SQL Server. 유지 관리 계획 마법사 사용Use the Maintenance Plan Wizard
SQL Server 에이전트를 사용하여 관리 태스크를 자동화하는 방법을 설명합니다.Describes how to automate administrative tasks using SQL Server Agent. 관리 태스크 자동화(SQL Server 에이전트)Automated Administration Tasks (SQL Server Agent)

참고 항목See Also

노출 영역 구성Surface Area Configuration