jobs.sp_add_jobstep(Azure 탄력적 작업)(Transact-SQL)

적용 대상:Azure SQL Database

Azure SQL Database용 Azure Elastic Jobs 서비스의 기존 작업에 단계를 추가합니다. jobs.sp_update_jobstep 사용하여 기존 탄력적 작업 단계를 수정합니다.

이 저장 프로시저는 SQL Server 에이전트 서비스의 SQL Server에서 유사한 개체와 이름을 sp_add_jobstep 공유합니다. SQL Server 에이전트 버전에 대한 자세한 내용은 sp_add_jobstep(Transact-SQL)를 참조하세요.

Transact-SQL 구문 표기 규칙

구문

[jobs].sp_add_jobstep [ @job_name = ] 'job_name'
     [ , [ @step_id = ] step_id ]
     [ , [ @step_name = ] step_name ]
     [ , [ @command_type = ] 'command_type' ]
     [ , [ @command_source = ] 'command_source' ]  
     , [ @command = ] 'command'
     [, [ @credential_name = ] 'credential_name' ]
     , [ @target_group_name = ] 'target_group_name'
     [ , [ @initial_retry_interval_seconds = ] initial_retry_interval_seconds ]
     [ , [ @maximum_retry_interval_seconds = ] maximum_retry_interval_seconds ]
     [ , [ @retry_interval_backoff_multiplier = ] retry_interval_backoff_multiplier ]
     [ , [ @retry_attempts = ] retry_attempts ]
     [ , [ @step_timeout_seconds = ] step_timeout_seconds ]
     [ , [ @output_type = ] 'output_type' ]
     [ , [ @output_credential_name = ] 'output_credential_name' ]
     [ , [ @output_subscription_id = ] 'output_subscription_id' ]
     [ , [ @output_resource_group_name = ] 'output_resource_group_name' ]
     [ , [ @output_server_name = ] 'output_server_name' ]
     [ , [ @output_database_name = ] 'output_database_name' ]
     [ , [ @output_schema_name = ] 'output_schema_name' ]
     [ , [ @output_table_name = ] 'output_table_name' ]
     [ , [ @job_version = ] job_version OUTPUT ]
     [ , [ @max_parallelism = ] max_parallelism ]

인수

@job_name

단계를 추가할 작업의 이름입니다. job_name nvarchar(128)입니다.

@step_id

작업 단계의 시퀀스 ID입니다. 단계 ID 번호는 1에서 시작하여 간격 없이 증가합니다. 기존 단계에 이미 이 ID가 있는 경우 해당 단계와 다음 단계의 모든 단계에 ID가 증가하여 이 새 단계를 시퀀스에 삽입할 수 있습니다. 지정 하지 않으면 step_id 단계 시퀀스의 마지막에 자동으로 할당됩니다. step_id int입니다.

@step_name

단계의 이름입니다. (편의를 위해) 기본 이름이 JobStep있는 작업의 첫 번째 단계를 제외하고 지정해야 합니다. step_name nvarchar(128)입니다.

@command_type

이 작업 단계에서 실행되는 명령의 형식입니다. command_type nvarchar(50)이며 기본값TSql은 @command_type 매개 변수의 값이 T-SQL 스크립트임을 의미합니다.

지정한 경우 값은 .이어야 TSql합니다.

@command_source

명령이 저장된 위치의 유형입니다. command_source 기본값Inline인 nvarchar(50)입니다. 즉, @command 매개 변수의 값이 명령의 리터럴 텍스트입니다.

지정한 경우 값은 .이어야 Inline합니다.

@command

이 작업 단계에서 실행할 유효한 T-SQL 스크립트입니다. 명령은 nvarchar(max)이며 기본값은 .입니다 NULL.

@credential_name

이 단계가 실행될 때 대상 그룹 내의 각 대상 데이터베이스에 연결하는 데 사용되는 이 작업 제어 데이터베이스에 저장된 데이터베이스 범위 자격 증명의 이름입니다. credential_name nvarchar(128)입니다.

Microsoft Entra 인증(이전의 Azure Active Directory)을 사용하는 경우 데이터베이스 범위 자격 증명을 사용하는 경우에만 제공해야 하는 @credential_name 매개 변수를 생략합니다.

@target_group_name

작업 단계가 실행될 대상 데이터베이스를 포함하는 대상 그룹의 이름입니다. target_group_name nvarchar(128)입니다.

@initial_retry_interval_seconds

초기 실행 시도에서 작업 단계가 실패하는 경우 첫 번째 재시도가 시작될 때까지의 지연 시간입니다. initial_retry_interval_seconds 기본값이 1인 int입니다.

@maximum_retry_interval_seconds

재시도 간의 최대 지연 시간입니다. 재시도 간의 지연 시간이 이 값보다 커지면 대신 이 값으로 제한됩니다. maximum_retry_interval_seconds int이며 기본값은 120입니다.

@retry_interval_backoff_multiplier

여러 작업 단계 실행 시도가 실패하는 경우 재시도 지연 시간에 적용할 승수입니다. 예를 들어 첫 번째 재시도의 지연 시간이 5초이고 백오프 승수가 2.0인 경우 두 번째 재시도의 지연 시간은 10초, 세 번째 재시도의 지연 시간은 20초가 됩니다. retry_interval_backoff_multiplier 기본값이 2.0인 실제 데이터 형식입니다.

@retry_attempts

초기 시도가 실패하는 경우 실행을 다시 시도하는 횟수입니다. 예를 들어 retry_attempts 값이 10이면 초기 시도 1회와 재시도 10회가 있으며 총 11번의 시도가 있습니다. 최종 재시도 시도가 실패하면 jobs.job_executions 기록된 작업 실행이 종료 lifecycleFailed 됩니다. retry_attempts 기본값이 10인 int입니다.

@step_timeout_seconds

단계를 실행하는 데 허용되는 최대 시간입니다. 이 시간을 초과하면 jobs.job_executions 기록된 작업 실행이 종료 lifecycleTimedOut 됩니다. step_timeout_seconds 기본값이 43,200초(12시간)인 int입니다.

@output_type

그렇지 않은 NULL경우 명령의 첫 번째 결과 집합이 기록되는 대상의 형식입니다. output_type 기본값NULL인 nvarchar(50)입니다.

지정한 경우 값은 .이어야 SqlDatabase합니다.

@output_credential_name

null이 아니면 출력 대상 데이터베이스에 연결하는 데 사용되는 데이터베이스 범위 자격 증명의 이름입니다. output_typeSqlDatabase으면 지정해야 합니다. output_credential_name nvarchar(128)이며 기본값NULL은 .입니다.

Microsoft Entra 인증(이전의 Azure Active Directory)을 사용하는 경우 데이터베이스 범위 자격 증명을 사용하는 경우에만 제공해야 하는 @output_credential_name 매개 변수를 생략합니다.

@output_subscription_id

출력에 사용할 Azure 구독 ID입니다. 기본값은 작업 에이전트의 구독입니다. output_subscription_id uniqueidentifier입니다.

@output_resource_group_name

출력 데이터베이스가 있는 리소스 그룹의 이름입니다. 기본적으로 작업 에이전트의 리소스 그룹으로 설정됩니다. output_resource_group_name nvarchar(128)입니다.

@output_server_name

그렇지 않은 NULL경우 출력 대상 데이터베이스를 포함하는 서버의 정규화된 DNS 이름(예: @output_server_name = 'server1.database.windows.net'. output_typeSqlDatabase으면 지정해야 합니다. output_server_name 기본값NULL인 nvarchar(256)입니다.

@output_database_name

그렇지 않은 NULL경우 출력 대상 테이블을 포함하는 데이터베이스의 이름입니다. output_typeSqlDatabase으면 지정해야 합니다. output_database_name 기본값NULL인 nvarchar(128)입니다.

@output_schema_name

그렇지 않은 NULL경우 출력 대상 테이블을 포함하는 SQL 스키마의 이름입니다. output_type 같으면 기본값은 .입니다dbo.SqlDatabase output_schema_name nvarchar(128)입니다.

@output_table_name

그렇지 않은 NULL경우 명령의 첫 번째 결과 집합이 기록될 테이블의 이름입니다. 테이블이 아직 없는 경우 반환 결과 집합의 스키마를 기반으로 만들어집니다. output_typeSqlDatabase으면 지정해야 합니다. output_table_name nvarchar(128)이며 기본값NULL은 .입니다.

output_table_name 지정하는 경우 작업 에이전트 UMI 또는 데이터베이스 범위 자격 증명에 테이블에 대한 CREATE TABLE 및 INSERT 데이터에 필요한 권한이 부여되어야 합니다.

@job_version 출력

새 작업 버전 번호가 할당될 출력 매개 변수입니다. job_version int입니다.

@max_parallelism 출력

탄력적 풀당 최대 병렬 처리 수준입니다.

설정되는 경우 작업 단계가 탄력적 풀당 최댓값 이하의 여러 데이터베이스에서만 실행되도록 제한됩니다. 이는 대상 그룹에 직접 포함된 각 탄력적 풀 또는 대상 그룹에 포함된 서버 내에 있는 탄력적 풀에 적용됩니다. max_parallelism int입니다.

반환 코드 값

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

설명

성공하면 sp_add_jobstep 작업의 현재 버전 번호가 증가합니다. 다음에 작업이 실행될 때 새 버전이 사용됩니다. 작업이 현재 실행 중이면 해당 실행에는 새 단계가 포함되지 않습니다.

  • Microsoft Entra 인증을 사용하여 대상 서버/데이터베이스에 인증하는 경우 @credential_name@output_credential_name 인수를 제공하거나 sp_update_jobstep제공하지 sp_add_jobstep 않아야 합니다.
  • 데이터베이스 범위 자격 증명을 사용하여 대상 서버/데이터베이스를 인증하는 경우 @credential_name 매개 변수가 sp_add_jobstep 또는 sp_update_jobstep에 필요합니다. 예들 들어 @credential_name = 'job_credential'입니다.

사용 권한

sysadmin 고정 서버 역할의 멤버는 기본적으로 이 저장 프로시저를 실행할 수 있습니다. sysadmin의 멤버만 이 저장 프로시저를 사용하여 다른 사용자가 소유한 작업의 특성을 편집할 수 있습니다.

예제

T-SQL 문을 실행하는 작업 단계 만들기

다음 예제에서는 탄력적 작업에서 T-SQL 문을 실행하는 탄력적 작업을 만드는 방법을 보여줍니다. 다음 예제에서는 대상 그룹에서 PoolGroup실행할 작업에서 CreateTableTest작업 단계를 만드는 데 사용합니다jobs.sp_add_jobstep.

job_database에 연결하고 다음 명령을 실행합니다.

--Connect to the job database specified when creating the job agent

--Add job for create table
EXEC jobs.sp_add_job @job_name = 'CreateTableTest', @description = 'Create Table Test';

-- Add job step for create table
EXEC jobs.sp_add_jobstep @job_name = 'CreateTableTest',
@command = N'IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = object_id(''Test''))
CREATE TABLE [dbo].[Test]([TestId] [int] NOT NULL);',
@target_group_name = 'PoolGroup';

T-SQL 문을 실행하고 결과를 수집하는 작업 단계 만들기

다음 예제에서는 탄력적 작업을 만들어 탄력적 작업에서 T-SQL 문을 실행하고 Azure SQL Database에서 결과를 수집하는 방법을 보여줍니다. 다음 예제에서는 대상 그룹에서 PoolGroup실행할 작업에서 ResultsJob작업 단계를 만드는 데 사용합니다jobs.sp_add_jobstep. 결과는 서버server1.database.windows.net에서 명명된 데이터베이스에 명명 dbo.results_tableResults 된 테이블에 기록됩니다.

--Connect to the job database specified when creating the job agent

-- Add a job to collect perf results
EXEC jobs.sp_add_job @job_name ='ResultsJob', @description='Collection Performance data from all customers'

-- Add a job step w/ schedule to collect results
EXEC jobs.sp_add_jobstep
@job_name = 'ResultsJob',
@command = N' SELECT DB_NAME() DatabaseName, $(job_execution_id) AS job_execution_id, * FROM sys.dm_db_resource_stats WHERE end_time > DATEADD(mi, -20, GETDATE());',
@target_group_name = 'PoolGroup',
@output_type = 'SqlDatabase',
@output_server_name = 'server1.database.windows.net',
@output_database_name = 'Results',
@output_schema_name = 'dbo',
@output_table_name = 'results_table';