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