sp_add_jobstep(Transact-SQL)

업데이트: 2006년 4월 14일

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

구문

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_iduniqueidentifier이며 기본값은 NULL입니다.
  • [ @job_name = ] 'job_name'
    단계를 추가할 작업의 이름입니다. job_namesysname이며 기본값은 NULL입니다.

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

  • [ @step_id = ] step_id
    작업 단계의 시퀀스 ID입니다. 단계 ID는 1에서 시작하며 건너 뛰지 않고 차례로 증가합니다. 기존 시퀀스에 단계를 삽입하는 경우에는 시퀀스 번호가 자동으로 조정됩니다. step_id가 지정되지 않은 경우에는 값이 제공됩니다. step_idint이며 기본값은 NULL입니다.
  • [ @step_name = ] 'step_name'
    단계의 이름입니다. step_namesysname이며 기본값은 없습니다.
  • [ @subsystem = ] 'subsystem'
    Microsoft SQL Server 에이전트 서비스가 command를 실행하는 데 사용하는 하위 시스템입니다. subsystem은 **nvarchar(40)**이며 다음 값 중 하나를 사용할 수 있습니다.

    설명

    'ACTIVESCRIPTING'

    액티브 스크립트

    'CMDEXEC'

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

    'DISTRIBUTION'

    복제 배포 에이전트 작업

    'SNAPSHOT'

    복제 스냅숏 에이전트 작업

    'LOGREADER'

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

    'MERGE'

    복제 병합 에이전트 작업

    'QueueReader'

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

    'ANALYSISQUERY'

    Analysis Services 쿼리(MDX, DMX)

    'ANALYSISCOMMAND'

    Analysis Services 명령(XMLA)

    'Dts'

    Integration Services 패키지 실행

    'TSQL'(기본값)

    Transact-SQL 문

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

    ms187358.note(ko-kr,SQL.90).gif중요:
    SQL Server 2005 서비스 팩 1에서는 SQL Server 에이전트 작업 단계의 토큰 구문이 변경되었습니다. 그러므로 작업 단계에서 사용되는 모든 토큰에 이스케이프 매크로를 사용해야 하며 그렇지 않으면 해당 작업 단계가 실패합니다. 또한 대괄호를 사용하여 SQL Server 에이전트 작업 단계 토큰을 호출한 SQL Server 2000 구문(예: "[DATE]")이 변경되었습니다. 이제 토큰 이름을 괄호로 묶고 토큰 구문의 시작 부분에 달러 기호($)를 사용해야 합니다. 예를 들면 다음과 같습니다. $(ESCAPE_macro name(DATE))

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

    ms187358.security(ko-kr,SQL.90).gif보안 정보:
    Windows 이벤트 로그에 대한 쓰기 권한이 있는 모든 Windows 사용자는 SQL Server 에이전트 경고 또는 WMI 경고로 활성화되는 작업 단계에 액세스할 수 있습니다. 이러한 보안상 위험을 방지하기 위해 경고로 활성화되는 작업에 사용할 수 있는 SQL Server 에이전트 토큰은 기본적으로 해제됩니다. 이러한 토큰에는 A-DBN, A-SVR, A-ERR, A-SEV, A-MSG. 및 WMI(property)가 있습니다. 이러한 토큰을 사용해야 하는 경우 먼저 Administrators 그룹과 같은 트러스트된 Windows 보안 그룹의 멤버만 SQL Server가 설치된 컴퓨터의 이벤트 로그에 대한 쓰기 권한이 있는지 확인합니다. 그런 다음 개체 탐색기에서 SQL Server 에이전트를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택하고 경고 시스템 페이지에서 경고에 대한 모든 응답 작업에 대해 토큰 바꾸기를 선택하여 이러한 토큰을 설정합니다.
  • [ @additional_parameters= ] 'parameters'
    정보 제공용으로만 식별됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다. parametersntext이며 기본값은 NULL입니다.
  • [ @cmdexec_success_code = ] code
    CmdExec 하위 시스템 명령에서 반환한 값으로 command가 제대로 실행되었음을 나타냅니다. codeint이며 기본값은 0입니다.
  • [ @on_success_action= ] success_action
    단계가 성공한 경우에 수행할 작업입니다. success_actiontinyint이며 다음 값 중 하나를 사용할 수 있습니다.

    설명(작업)

    1(기본값)

    성공적으로 종료

    2

    실패로 종료

    3

    다음 단계로 이동

    4

    on_success_step_id 단계로 이동

  • [ @on_success_step_id = ] success_step_id
    단계가 성공하고 success_action4인 경우 이 작업에서 실행할 단계의 ID입니다. success_step_idint이며 기본값은 0입니다.
  • [ @on_fail_action= ] fail_action
    단계가 실패할 경우 수행할 작업입니다. fail_actiontinyint이며 다음 값 중 하나를 사용할 수 있습니다.

    설명(작업)

    1

    성공적으로 종료

    2(기본값)

    실패로 종료

    3

    다음 단계로 이동

    4

    on_fail_step_id 단계로 이동

  • [ @on_fail_step_id= ] fail_step_id
    단계가 실패하고 fail_action4인 경우 이 작업에서 실행할 단계의 ID입니다. fail_step_idint이며 기본값은 0입니다.
  • [ @server = ] 'server'
    정보 제공용으로만 식별됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다. server는 **nvarchar(30)**이며 기본값은 NULL입니다.
  • [ @database_name= ] 'database'
    Transact-SQL 단계를 실행할 데이터베이스의 이름입니다. databasesysname이며 기본값은 NULL입니다. 이 경우 master 데이터베이스가 사용됩니다. ActiveX 작업 단계의 경우 database는 단계에서 사용하는 스크립팅 언어의 이름입니다.
  • [ @database_user_name= ] 'user'
    Transact-SQL 단계를 실행할 때 사용할 사용자 계정의 이름입니다. usersysname이며 기본값은 NULL입니다. user가 NULL인 경우 단계는 database상의 작업 소유자 사용자 컨텍스트에서 실행됩니다.
  • [ @retry_attempts= ] retry_attempts
    이 단계가 실패한 경우 재시도하는 횟수입니다. retry_attemptsint이며 기본값은 재시도하지 않음을 나타내는 0입니다.
  • [ @retry_interval= ] retry_interval
    재시도 사이의 시간(분)입니다. retry_intervalint이며 기본값은 0분 간격을 나타내는 0입니다.
  • [ @os_run_priority = ] run_priority
    정보 제공용으로만 식별됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다.
  • [ @output_file_name= ] 'file_name'
    이 단계의 출력이 저장되는 파일의 이름입니다. file_name은 **nvarchar(200)**이며 기본값은 NULL입니다. file_name에는 command 아래에 나열된 하나 이상의 토큰이 포함될 수 있습니다. 이 매개 변수는 Transact-SQL 또는 CmdExec 하위 시스템에서 실행되는 명령과 함께 사용되는 경우에만 유효합니다.
  • [ @flags= ] flags
    동작을 제어하는 옵션입니다. flagsint이며 다음 값 중 하나를 사용할 수 있습니다.

    설명

    0(기본값)

    출력 파일을 덮어씁니다.

    2

    출력 파일에 추가합니다.

    4

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

    8

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

    16

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

  • [ @proxy_id = ] proxy_id
    작업 단계가 실행되는 프록시의 ID입니다. proxy_idint 유형이며 기본값은 NULL입니다. proxy_id, proxy_nameuser_name을 모두 지정하지 않으면 작업 단계는 SQL Server 에이전트에 대한 서비스 계정으로 실행됩니다.
  • [ @proxy_name = ] 'proxy_name'
    작업 단계가 실행되는 프록시의 이름입니다. proxy_namesysname 유형이며 기본값은 NULL입니다. proxy_id, proxy_nameuser_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 고정 서버 역할의 멤버는 모든 프록시에 액세스할 수 있습니다. 다른 사용자에게는 프록시에 대한 액세스 권한을 명시적으로 부여해야 합니다.

다음 예에서는 AdventureWorks 데이터베이스에 대한 액세스 권한을 읽기 전용으로 변경하는 작업 단계를 만듭니다. 또한 이 예에서는 다시 시도 횟수를 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'exec sp_dboption ''sales'', ''read only'', ''true''', 
    @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)

관련 자료

작업 보기 및 수정

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 4월 14일

새로운 내용
  • SQL Server 2005 서비스 팩 1의 SQL Server 에이전트 토큰 구문 변경에 대한 중요 내용을 삽입했습니다.
변경된 내용
  • 이전 SQL Server 에이전트 토큰 구문에 대한 설명을 제거했습니다.