다음을 통해 공유


sp_update_jobstep(Transact-SQL)

적용 대상: SQL Server Azure SQL Managed Instance

SQL Server 에이전트 서비스에서 자동화된 작업을 수행하는 데 사용되는 작업의 단계 설정을 변경합니다.

Transact-SQL 구문 표기 규칙

구문

sp_update_jobstep
    [ [ @job_id = ] 'job_id' ]
    [ , [ @job_name = ] N'job_name' ]
    , [ @step_id = ] step_id
    [ , [ @step_name = ] N'step_name' ]
    [ , [ @subsystem = ] N'subsystem' ]
    [ , [ @command = ] N'command' ]
    [ , [ @additional_parameters = ] N'additional_parameters' ]
    [ , [ @cmdexec_success_code = ] cmdexec_success_code ]
    [ , [ @on_success_action = ] on_success_action ]
    [ , [ @on_success_step_id = ] on_success_step_id ]
    [ , [ @on_fail_action = ] on_fail_action ]
    [ , [ @on_fail_step_id = ] on_fail_step_id ]
    [ , [ @server = ] N'server' ]
    [ , [ @database_name = ] N'database_name' ]
    [ , [ @database_user_name = ] N'database_user_name' ]
    [ , [ @retry_attempts = ] retry_attempts ]
    [ , [ @retry_interval = ] retry_interval ]
    [ , [ @os_run_priority = ] os_run_priority ]
    [ , [ @output_file_name = ] N'output_file_name' ]
    [ , [ @flags = ] flags ]
    [ , [ @proxy_id = ] proxy_id ]
    [ , [ @proxy_name = ] N'proxy_name' ]
[ ; ]

인수

[ @job_id = ] 'job_id'

단계가 속한 작업의 ID 번호입니다. @job_id 기본값NULLuniqueidentifier입니다.

@job_id 또는 @job_name 지정해야 하지만 둘 다 지정할 수는 없습니다.

[ @job_name = ] N'job_name'

단계가 속한 작업의 이름입니다. @job_name sysname이며 기본값은 .입니다NULL.

@job_id 또는 @job_name 지정해야 하지만 둘 다 지정할 수는 없습니다.

[ @step_id = ] step_id

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

[ @step_name = ] N'step_name'

단계의 새 이름입니다. @step_name 기본값NULL인 sysname입니다.

[ @subsystem = ] N'subsystem'

SQL Server 에이전트 @command 실행하는 데 사용하는 하위 시스템입니다. @subsystem 기본값NULL인 nvarchar(40)입니다.

[ @command = ] N'command'

@subsystem 통해 실행할 명령입니다. @command 기본값NULL인 nvarchar(max)입니다.

[ @additional_parameters = ] N'additional_parameters'

정보를 제공하기 위해서만 확인됩니다. 지원 안 됨. 향후 호환성은 보장되지 않습니다.

[ @cmdexec_success_code = ] cmdexec_success_code

명령이 성공적으로 실행되었음을 나타내기 위해 CmdExec 하위 시스템 명령에서 반환된 값입니다. @cmdexec_success_code 기본값NULL인 int입니다.

[ @on_success_action = ] on_success_action

단계가 성공하면 수행할 작업입니다. @on_success_action 기본값NULL인 tinyint이며 이러한 값 중 하나일 수 있습니다.

설명(동작)
1 성공으로 종료
2 실패로 종료
3 다음 단계로 이동
4 단계 @on_success_step_id

[ @on_success_step_id = ] on_success_step_id

단계가 성공하고 @on_success_action 경우 실행할 이 작업의 단계 ID 번호입니다 4. @on_success_step_id 기본값NULL인 int입니다.

[ @on_fail_action = ] on_fail_action

단계가 실패할 경우 수행할 작업입니다. @on_fail_action tinyint이며 이러한 값 중 하나를 가질 수 있습니다.

설명(동작)
1 성공으로 종료
2 실패로 종료
3 다음 단계로 이동
4 단계 @on_fail_step_id

[ @on_fail_step_id = ] on_fail_step_id

단계가 실패하고 @on_fail_action 경우 실행할 이 작업의 단계 ID 번호입니다 4. @on_fail_step_id 기본값NULLint입니다.

[ @server = ] N'server'

정보를 제공하기 위해서만 확인됩니다. 지원 안 됨. 향후 호환성은 보장되지 않습니다.

[ @database_name = ] N'database_name'

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

[ @database_user_name = ] N'database_user_name'

Transact-SQL 단계를 실행할 때 사용할 데이터베이스 사용자의 이름입니다. @database_user_name sysname이며 기본값은 .입니다NULL.

[ @retry_attempts = ] retry_attempts

이 단계가 실패할 경우에 재시도하는 횟수입니다. @retry_attempts 기본값NULLint입니다.

[ @retry_interval = ] retry_interval

재시도 간격(분)입니다. @retry_interval 기본값NULL인 int입니다.

[ @os_run_priority = ] os_run_priority

정보를 제공하기 위해서만 확인됩니다. 지원 안 됨. 향후 호환성은 보장되지 않습니다.

[ @output_file_name = ] N'output_file_name'

이 단계의 출력이 저장되는 파일의 이름입니다. @output_file_name 기본값NULL인 nvarchar(200)입니다. 이 매개 변수는 Transact-SQL 또는 CmdExec 하위 시스템에 실행되는 명령에서만 유효합니다.

@output_file_name 다시 설정하려면 @output_file_name 빈 문자열 또는 빈 문자 문자열로 설정해야 하지만 함수를 CHAR(32) 사용할 수는 NULL없습니다.

예를 들어 다음과 같이 이 인수를 빈 문자열로 설정합니다.

@output_file_name = ' '

[ @flags = ] flags

동작을 제어하는 옵션입니다. @flags 기본값NULLint입니다.

설명
0(기본값) 출력 파일 덮어쓰기
2 출력 파일에 추가
4 Transact-SQL 작업 단계 출력을 단계 기록에 쓰기
8 테이블에 로그를 씁니다(기존 기록을 덮어씀).
16 테이블에 로그 작성(기존 기록에 추가)

[ @proxy_id = ] proxy_id

작업 단계가 실행되는 프록시의 ID 번호입니다. @proxy_id int이며 기본값은 .입니다NULL. @proxy_id 지정되지 않고 @proxy_name 지정되지 않고 @database_user_name 지정되지 않은 경우 작업 단계는 SQL Server 에이전트 대한 서비스 계정으로 실행됩니다.

[ @proxy_name = ] N'proxy_name'

작업 단계가 실행되는 프록시의 이름입니다. @proxy_name sysname이며 기본값은 .입니다NULL. @proxy_id 지정되지 않고 @proxy_name 지정되지 않고 @database_user_name 지정되지 않은 경우 작업 단계는 SQL Server 에이전트 대한 서비스 계정으로 실행됩니다.

반환 코드 값

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

설명

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

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

이 저장 프로시저는 Azure SQL Database용 Azure Elastic Jobs 서비스에 대한 유사한 개체와 이름을 sp_update_jobstep 공유합니다. 탄력적 작업 버전에 대한 자세한 내용은 jobs.sp_update_jobstep(Azure 탄력적 작업)를 참조하세요.

사용 권한

이 저장 프로시저는 db_owner 역할이 소유합니다. 모든 사용자에 대한 사용 권한을 부여 EXECUTE 할 수 있지만 SQL Server 업그레이드 중에 이러한 권한이 재정의될 수 있습니다.

다른 사용자에게는 데이터베이스에서 다음 SQL Server 에이전트 고정 데이터베이스 역할 msdb 중 하나가 부여되어야 합니다.

  • 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