Поделиться через


jobs.sp_add_jobstep (задания эластичных баз данных Azure) (Transact-SQL)

Применимо к: База данных SQL Azure

Добавляет шаг к существующему заданию в службе заданий Эластичных заданий Azure для База данных SQL Azure. Используйте jobs.sp_update_jobstep для изменения существующих шагов эластичного задания.

Эта хранимая процедура использует имя аналогичного sp_add_jobstep объекта в SQL Server для службы агент SQL Server. Сведения о версии агент 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

Порядковый идентификационный номер для шага задания. Последовательные идентификационные номера начинаются с 1 и увеличиваются без пропусков. Если существующий шаг уже имеет этот идентификатор, этот шаг и все следующие шаги будут увеличивать идентификаторы, чтобы этот новый шаг можно было вставить в последовательность. Если это не указано, 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 имеет значение nvarchar(50) со значением по умолчанию, то есть значение Inlineпараметра @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 имеет значение int с значением по умолчанию 1.

@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 попыток. Если последняя попытка повтора завершается сбоем, выполнение задания завершится записью lifecycle Failed в jobs.job_executions. retry_attempts имеет значение int с значением по умолчанию 10.

@step_timeout_seconds

Максимальная продолжительность выполнения шага. Если это время превышено, выполнение задания завершится с lifecycle TimedOut записью в jobs.job_executions. step_timeout_seconds имеет значение int, при этом значение по умолчанию составляет 43 200 секунд (12 часов).

@output_type

Если нетNULL, тип назначения, в который записывается первый результирующий набор команды. output_type — nvarchar(50) с значением по умолчаниюNULL.

Если задано, значение должно быть SqlDatabase.

@output_credential_name

Если значение не равно NULL, имя учетных данных в области базы данных, используемое для подключения к выходной целевой базе данных. Необходимо указать, если output_type равно SqlDatabase. output_credential_name — nvarchar(128) со значением NULLпо умолчанию.

При использовании проверки подлинности Microsoft Entra (ранее Azure Active Directory) опустите параметр @output_credential_name , который следует указать только при использовании учетных данных с областью базы данных.

@output_subscription_id

Идентификатор подписки Azure, используемый для выходных данных. По умолчанию используется подписка агента задания. output_subscription_id является уникальным идентификатором.

@output_resource_group_name

Имя группы ресурсов, в которой находится выходная база данных. По умолчанию используется группа ресурсов агента заданий. output_resource_group_name — nvarchar(128).

@output_server_name

Если нетNULL, полное DNS-имя сервера, содержащего выходную целевую базу данных, например: @output_server_name = 'server1.database.windows.net' Необходимо указать, если output_type равно SqlDatabase. output_server_name — nvarchar(256) с значением по умолчаниюNULL.

@output_database_name

Если нет NULL, имя базы данных, содержащей выходную целевую таблицу. Необходимо указать, если output_type равно SqlDatabase. output_database_name — nvarchar(128) с значением по умолчаниюNULL.

@output_schema_name

Если нет NULL, имя схемы SQL, содержащей выходную целевую таблицу. Если output_type равно SqlDatabase, значение по умолчанию равно dbo. output_schema_name — nvarchar(128).

@output_table_name

Если нет NULL, имя таблицы, в которую будет записан первый результирующий набор команды. Если таблица еще не существует, она будет создана на основе схемы возвращаемого результирующий набор. Необходимо указать, если output_type равно SqlDatabase. output_table_name — nvarchar(128) со значением NULLпо умолчанию.

При указании output_table_name учетные данные агента заданий или учетные данные с областью базы данных должны быть предоставлены необходимые разрешения для создания данных 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_add_jobstep илиsp_update_jobstep.
  • При использовании учетных данных с областью базы данных для проверки подлинности на целевых серверах/базах данных требуется sp_add_jobstep параметр @credential_name.sp_update_jobstep Например, @credential_name = 'job_credential'.

Разрешения

По умолчанию участники фиксированной роли сервера sysadmin могут выполнять эту хранимую процедуру. Только участники роли sysadmin могут использовать эту хранимую процедуру для редактирования атрибутов заданий, которыми владеют другие пользователи.

Примеры

Создание шага задания для выполнения инструкции T-SQL

В следующем примере показано, как создать эластичное задание для выполнения инструкции T-SQL в эластичном задании. В следующем примере для jobs.sp_add_jobstep создания шага задания в именованном CreateTableTestзадании выполняется целевая группа PoolGroup.

Подключитесь к следующей команде 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 в эластичном задании и сбора результатов в База данных SQL Azure. В следующем примере для jobs.sp_add_jobstep создания шага задания в именованном ResultsJobзадании выполняется целевая группа PoolGroup. Результаты записываются в таблицу с именем dbo.results_table в базе данных с именем Results на сервере server1.database.windows.net.

--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';