다음을 통해 공유


sp_update_jobstep(Transact-SQL)

자동 동작을 수행하기 위해 사용되는 작업의 단계에 대한 설정을 변경합니다.

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

구문

sp_update_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 =] success_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_id 또는 job_name 중 하나를 지정해야 하며 둘 다를 지정할 수는 없습니다.

  • [ @job_name =] 'job_name'
    단계가 속한 작업의 이름입니다. job_name은 sysname이며 기본값은 NULL입니다. job_id 또는 job_name 중 하나를 지정해야 하며 둘 다를 지정할 수는 없습니다.

  • [ @step_id =] step_id
    수정할 작업 단계의 ID입니다. 이 번호는 변경할 수 없습니다. step_id는 int이며 기본값은 없습니다.

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

  • [ @subsystem =] 'subsystem'
    Microsoft SQL Server 에이전트에서 command를 실행하기 위해 사용하는 하위 시스템입니다. subsystem은 nvarchar(40)이며 기본값은 NULL입니다.

  • [ @command =] 'command'
    subsystem을 통해 실행할 명령입니다. command는 nvarchar(max)이며 기본값은 NULL입니다.

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

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

  • [ @on_success_action =] success_action
    단계가 성공할 경우 수행할 동작입니다. success_action은 tinyint이며 기본값은 NULL이지만 다음 값 중 하나를 사용할 수 있습니다.

    설명(동작)

    1

    성공적으로 종료

    2

    실패로 종료

    3

    다음 단계로 이동

    4

    success_step_id. 단계로 이동

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

  • [ @on_fail_action =] fail_action
    단계가 실패할 경우 수행할 동작입니다. fail_action은 tinyint이며 기본값은 NULL이지만 다음 값 중 하나를 사용할 수 있습니다.

    설명(동작)

    1

    성공적으로 종료

    2

    실패로 종료

    3

    다음 단계로 이동

    4

    fail_step_id 단계로 이동

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

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

  • [ @database_name =] 'database'
    Transact-SQL 단계를 실행할 데이터베이스의 이름입니다. database는 sysname입니다. 이름을 대괄호([ ])로 묶는 것은 허용되지 않습니다. 기본값은 NULL입니다.

  • [ @database_user_name =] 'user'
    Transact-SQL 단계를 실행할 때 사용할 사용자 계정의 이름입니다. user는 sysname이며 기본값은 NULL입니다.

  • [ @retry_attempts =] retry_attempts
    이 단계가 실패하면 사용할 재시도 횟수입니다. retry_attempts는 int이며 기본값은 NULL입니다.

  • [ @retry_interval =] retry_interval
    재시도 간의 시간(분)입니다. retry_interval은 int이며 기본값은 NULL입니다.

  • [ @os_run_priority =] run_priority
    정보를 제공하기 위해서만 확인됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다.

  • [ @output_file_name =] 'file_name'
    이 단계의 출력이 저장되는 파일의 이름입니다. file_name은 nvarchar(200)이며 기본값은 NULL입니다. 이 매개 변수는 Transact-SQL 또는 CmdExec 하위 시스템에서 실행되는 명령과 함께 사용하는 경우에만 유효합니다.

    output_file_name을 다시 NULL로 설정하려면 output_file_name을 빈 문자열(' ') 또는 빈 문자의 문자열로 설정해야 하지만 CHAR(32) 함수를 사용할 수 없습니다. 예를 들어 다음과 같이 이 인수를 빈 문자열로 설정합니다.

    @output_file_name = ' '

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

    설명

    0(기본값)

    출력 파일을 덮어씁니다.

    2

    출력 파일에 추가합니다.

    4

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

    8

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

    16

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

  • [ @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_update_jobstepmsdb 데이터베이스에서 실행해야 합니다.

작업 단계를 업데이트하면 작업 버전 번호가 증가합니다.

사용 권한

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

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

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

sysadmin의 멤버만 다른 사용자가 소유한 작업 단계를 업데이트할 수 있습니다.

작업 단계에서 프록시에 액세스해야 할 경우 작업 단계를 만든 사람에게 작업 단계의 프록시에 대한 액세스 권한이 있어야 합니다. Transact-SQL을 제외한 모든 하위 시스템에서는 프록시 계정이 필요합니다. sysadmin의 멤버는 모든 프록시에 액세스할 수 있으며 프록시에 대한 SQL Server 에이전트 서비스 계정을 사용할 수 있습니다.

다음 예에서는 Weekly Sales Data Backup 작업의 첫 번째 단계에 대한 재시도 횟수를 변경합니다. 이 예를 실행한 후 재시도 횟수는 10이 됩니다.

USE msdb ;
GO

EXEC dbo.sp_update_jobstep
    @job_name = N'Weekly Sales Data Backup',
    @step_id = 1,
    @retry_attempts = 10 ;
GO