sp_add_jobstep(Transact-SQL)

작업에 단계를 추가합니다.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

구문

sp_add_jobstep [ @job_id = ] job_id | [ @job_name = ] 'job_name' 
     [ , [ @step_id = ] step_id ] 
     { , [ @step_name = ] 'step_name' } 
     [ , [ @subsystem = ] 'subsystem' ] 
     [ , [ @command = ] 'command' ] 
     [ , [ @additional_parameters = ] 'parameters' ] 
          [ , [ @cmdexec_success_code = ] code ] 
     [ , [ @on_success_action = ] success_action ] 
          [ , [ @on_success_step_id = ] success_step_id ] 
          [ , [ @on_fail_action = ] fail_action ] 
          [ , [ @on_fail_step_id = ] fail_step_id ] 
     [ , [ @server = ] 'server' ] 
     [ , [ @database_name = ] 'database' ] 
     [ , [ @database_user_name = ] 'user' ] 
     [ , [ @retry_attempts = ] retry_attempts ] 
     [ , [ @retry_interval = ] retry_interval ] 
     [ , [ @os_run_priority = ] run_priority ] 
     [ , [ @output_file_name = ] 'file_name' ] 
     [ , [ @flags = ] flags ] 
     [ , { [ @proxy_id = ] proxy_id 
         | [ @proxy_name = ] 'proxy_name' } ]

인수

  • [ @job_id = ] job_id
    단계를 추가할 작업의 ID 번호입니다. job_id는 uniqueidentifier이며 기본값은 NULL입니다.

  • [ @job_name = ] 'job_name'
    단계를 추가할 작업의 이름입니다. job_name은 sysname이며 기본값은 NULL입니다.

    [!참고]

    job_id 또는 job_name 중 하나를 지정해야 하며 둘 다를 지정할 수는 없습니다.

  • [ @step_id = ] step_id
    작업 단계의 시퀀스 ID입니다. 단계 ID는 1에서 시작하며 건너 뛰지 않고 차례로 증가합니다. 기존 시퀀스에 단계를 삽입하는 경우에는 시퀀스 번호가 자동으로 조정됩니다. step_id가 지정되지 않은 경우에는 값이 제공됩니다. step_id는 int이며 기본값은 NULL입니다.

  • [ @step_name = ] 'step_name'
    단계 이름입니다. step_name은 sysname이며 기본값은 없습니다.

  • [ @subsystem = ] 'subsystem'
    SQL Server 에이전트 서비스에서 command를 실행하는 데 사용하는 하위 시스템입니다. subsystem은 nvarchar(40)이며 다음 값 중 하나일 수 있습니다.

    설명

    'ACTIVESCRIPTING'

    액티브 스크립트

    중요 정보중요

    Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오.

    'CMDEXEC'

    운영 체제 명령 또는 실행 프로그램

    'DISTRIBUTION'

    복제 배포 에이전트 작업

    'SNAPSHOT'

    복제 스냅숏 에이전트 작업

    'LOGREADER'

    복제 로그 판독기 에이전트 작업

    'MERGE'

    복제 병합 에이전트 작업

    'QueueReader'

    복제 큐 판독기 에이전트 작업

    'ANALYSISQUERY'

    Analysis Services 쿼리(MDX, DMX)

    'ANALYSISCOMMAND'

    Analysis Services 명령(XMLA)

    'Dts'

    Integration Services 패키지 실행

    'PowerShell'

    PowerShell 스크립트

    'TSQL'(기본값)

    Transact-SQL 문

  • [ @command= ] 'command'
    subsystem을 통해 SQLServerAgent 서비스에서 실행할 명령입니다. command는 nvarchar(max)이며 기본값은 NULL입니다. SQL Server 에이전트에는 소프트웨어 프로그램 작성 시 변수를 사용하는 것과 같은 유연성을 제공하는 토큰 대체 기능이 있습니다.

    중요 정보중요

    SQL Server 2005 서비스 팩 1에서는 SQL Server 에이전트 작업 단계의 토큰 구문이 변경되었습니다. 그러므로 작업 단계에서 사용되는 모든 토큰에 이스케이프 매크로를 사용해야 하며 그렇지 않으면 작업 단계가 실패합니다. 또한 이제 토큰 이름을 괄호로 묶고 토큰 구문의 시작 부분에 달러 기호($)를 사용해야 합니다. 예를 들면 다음과 같습니다.

    $(ESCAPE_macro name(DATE))

    이러한 토큰에 대한 자세한 내용과 새 토큰 구문을 사용하도록 작업 단계를 업데이트하는 방법은 작업 단계에서 토큰 사용을 참조하십시오.

    보안 정보보안 정보

    Windows 이벤트 로그에 대한 쓰기 권한이 있는 모든 Windows 사용자는 SQL Server 에이전트 경고 또는 WMI 경고로 활성화되는 작업 단계에 액세스할 수 있습니다. 이러한 보안상 위험을 방지하기 위해 경고로 활성화되는 작업에 사용할 수 있는 SQL Server 에이전트 토큰은 기본적으로 해제됩니다. 이러한 토큰에는 A-DBN, A-SVR, A-ERR, A-SEV, A-MSGWMI(property)가 있습니다. 이번 릴리스에서는 모든 경고에 토큰을 사용할 수 있습니다.

    이러한 토큰을 사용해야 하는 경우 먼저 Administrators 그룹과 같은 트러스트된 Windows 보안 그룹의 멤버만 SQL Server가 설치된 컴퓨터의 이벤트 로그에 대한 쓰기 권한이 있는지 확인합니다. 그런 다음 개체 탐색기에서 SQL Server 에이전트를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택하고 경고 시스템 페이지에서 경고에 대한 모든 응답 작업에 대해 토큰 바꾸기를 선택하여 이러한 토큰을 설정합니다.

  • [ @additional_parameters= ] 'parameters'
    정보를 제공하기 위해서만 확인됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다. parameters는 ntext이며 기본값은 NULL입니다.

  • [ @cmdexec_success_code = ] code
    CmdExec 하위 시스템 명령에 의해 반환되는 값으로, command가 성공적으로 실행되었음을 나타냅니다. code는 int이며 기본값은 0입니다.

  • [ @on_success_action= ] success_action
    단계가 성공할 경우에 수행할 동작입니다 success_action은 tinyint이며 다음 값 중 하나일 수 있습니다.

    설명(동작)

    1(기본값)

    성공적으로 종료

    2

    실패로 종료

    3

    다음 단계로 이동

    4

    on_success_step_id 단계로 이동

  • [ @on_success_step_id = ] success_step_id
    단계가 성공하고 success_action이 4인 경우에 실행할 이 작업 단계의 ID입니다. success_step_id는 int이며 기본값은 0입니다.

  • [ @on_fail_action= ] fail_action
    단계가 실패할 경우 수행할 동작입니다. fail_action은 tinyint이며 다음 값 중 하나일 수 있습니다.

    설명(동작)

    1

    성공적으로 종료

    2(기본값)

    실패로 종료

    3

    다음 단계로 이동

    4

    on_fail_step_id 단계로 이동

  • [ @on_fail_step_id= ] fail_step_id
    단계가 실패하고 fail_action이 4인 경우에 실행할 이 작업 단계의 ID입니다. fail_step_id는 int이며 기본값은 0입니다.

  • [ @server =] 'server'
    정보를 제공하기 위해서만 확인됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다. server는 nvarchar(30)이며 기본값은 NULL입니다.

  • [ @database_name = ] 'database'
    Transact-SQL 단계를 실행할 데이터베이스의 이름입니다. database는 sysname이며 기본값은 NULL입니다. 이 경우 master 데이터베이스가 사용됩니다. 이름을 대괄호([ ])로 묶는 것은 허용되지 않습니다. ActiveX 작업 단계의 경우 database는 단계에서 사용하는 스크립트 언어의 이름입니다.

  • [ @database_user_name= ] 'user'
    Transact-SQL 단계를 실행할 때 사용할 사용자 계정의 이름입니다. user는 sysname이며 기본값은 NULL입니다. user가 NULL인 경우 단계는 database상의 작업 소유자 사용자 컨텍스트에서 실행됩니다. SQL Server 에이전트는 작업 소유자가 SQL Server sysadmin인 경우에만 이 매개 변수를 포함합니다. 작업 소유자가 SQL Server sysadmin일 경우 지정한 Transact-SQL 단계가 지정한 SQL Server 사용자 이름의 컨텍스트에서 실행됩니다. 작업 소유자가 SQL Server sysadmin이 아니면 Transact-SQL 단계가 항상 해당 작업을 소유하는 로그인의 컨텍스트에서 실행되고 @database\_user\_name 매개 변수는 무시됩니다.

  • [ @retry_attempts= ] retry_attempts
    이 단계가 실패할 경우에 재시도하는 횟수입니다. retry_attempts는 int이며 기본값은 재시도하지 않음을 나타내는0입니다.

  • [ @retry_interval= ] retry_interval
    재시도 간격(분)입니다. retry_interval은 int이며 기본값은 0분 간격을 나타내는 0입니다.

  • [ @os_run_priority = ] run_priority
    예약되어 있습니다.

  • [ @output_file_name= ] 'file_name'
    이 단계의 출력이 저장되는 파일의 이름입니다. file_name은 nvarchar(200)이며 기본값은 NULL입니다. file_name에는 command 아래에 나열된 하나 이상의 토큰이 포함될 수 있습니다. 이 매개 변수는 Transact-SQL, CmdExec, PowerShell, Integration Services 또는 Analysis Services 하위 시스템에서 실행되는 명령과 함께 사용되는 경우에만 유효합니다.

  • [ @flags= ] flags
    동작을 제어하는 옵션입니다. flags는 int이며 다음 값 중 하나일 수 있습니다.

    설명

    0(기본값)

    출력 파일을 덮어씁니다.

    2

    출력 파일에 추가합니다.

    4

    Transact-SQL 작업 단계 출력을 단계 기록에 씁니다.

    8

    테이블에 로그를 씁니다(기존 기록을 덮어씀).

    16

    테이블에 로그를 씁니다(기존 기록에 추가).

    32

    모든 출력을 작업 기록에 씁니다.

    64

    중단할 Cmd jobstep에 대한 신호로 사용할 Windows 이벤트를 만듭니다.

  • [ @proxy_id = ] proxy_id
    작업 단계가 실행되는 프록시의 ID입니다. proxy_id는 int 유형이며 기본값은 NULL입니다. proxy_id, proxy_name 및 user_name을 모두 지정하지 않으면 작업 단계는 SQL Server 에이전트에 대한 서비스 계정으로 실행됩니다.

  • [ @proxy_name = ] 'proxy_name'
    작업 단계가 실행되는 프록시의 이름입니다. proxy_name는 sysname 유형이며 기본값은 NULL입니다. proxy_id, proxy_name 및 user_name을 모두 지정하지 않으면 작업 단계는 SQL Server 에이전트에 대한 서비스 계정으로 실행됩니다.

반환 코드 값

0(성공) 또는 1(실패)

결과 집합

없음

주의

sp_add_jobstepmsdb 데이터베이스에서 실행되어야 합니다.

SQL Server Management Studio는 작업 구조를 만들고 관리할 수 있는 바람직한 방법을 제공하는데, 이는 그래픽을 사용하여 쉽게 작업을 관리할 수 있는 방법입니다.

작업 단계의 생성자가 sysadmin 고정 보안 역할의 멤버가 아닌 경우에는 작업 단계에서 프록시를 지정해야 합니다.

프록시는 proxy_name이나 proxy_id로 식별할 수 있습니다.

사용 권한

기본적으로 sysadmin 고정 서버 역할의 멤버는 이 저장 프로시저를 실행할 수 있습니다. 다른 사용자는 msdb 데이터베이스의 다음 SQL Server 에이전트 고정 데이터베이스 역할 중 하나를 부여 받아야 합니다.

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

이러한 역할의 사용 권한에 대한 자세한 내용은 SQL Server 에이전트 고정 데이터베이스 역할을 참조하십시오.

작업 단계의 생성자는 작업 단계에 대한 프록시에 액세스할 수 있어야 합니다. sysadmin 고정 서버 역할의 멤버는 모든 프록시에 액세스할 수 있습니다. 다른 사용자에게는 프록시에 대한 액세스 권한을 명시적으로 부여해야 합니다.

다음 예에서는 Sales 데이터베이스에 대한 액세스 권한을 읽기 전용으로 변경하는 작업 단계를 만듭니다. 또한 이 예에서는 다시 시도 횟수를 5로 지정하고 각 다시 시도는 5분 대기한 후에 발생하도록 지정합니다.

[!참고]

이 예에서는 Weekly Sales Data Backup 작업이 이미 있다고 가정합니다.

USE msdb;
GO
EXEC sp_add_jobstep
    @job_name = N'Weekly Sales Data Backup',
    @step_name = N'Set database to read only',
    @subsystem = N'TSQL',
    @command = N'ALTER DATABASE SALES SET READ_ONLY', 
    @retry_attempts = 5,
    @retry_interval = 5 ;
GO

참고 항목

참조

sp_add_job(Transact-SQL)

sp_add_schedule(Transact-SQL)

sp_delete_jobstep(Transact-SQL)

sp_help_job(Transact-SQL)

sp_help_jobstep(Transact-SQL)

sp_update_jobstep(Transact-SQL)

시스템 저장 프로시저(Transact-SQL)

개념

작업 보기 또는 수정