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


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

Синтаксис

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