jobs.sp_add_jobstep (processi elastici di Azure) (Transact-SQL)
Si applica a: Database SQL di Azure
Aggiunge un passaggio a un processo esistente nel servizio Processi elastici di Azure per database SQL di Azure. Usare jobs.sp_update_jobstep per modificare i passaggi dei processi elastici esistenti.
Questa stored procedure condivide il nome di sp_add_jobstep
con un oggetto simile in SQL Server per il servizio SQL Server Agent. Per informazioni sulla versione di SQL Server Agent, vedere sp_add_jobstep.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
[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 ]
Argomenti
@job_name
Nome del processo a cui aggiungere il passaggio. job_name è nvarchar(128).
@step_id
Numero di identificazione sequenziale per il passaggio del processo. I numeri di identificazione dei passaggi iniziano da 1 e vengono incrementati senza interruzioni. Se un passaggio esistente ha già questo ID, tale passaggio e tutti i passaggi seguenti avranno gli ID incrementati in modo che questo nuovo passaggio possa essere inserito nella sequenza. Se non specificato, il step_id verrà assegnato automaticamente all'ultimo nella sequenza di passaggi. step_id è un valore int.
@step_name
Nome del passaggio. Deve essere specificato, ad eccezione del primo passaggio di un processo che (per praticità) ha un nome predefinito .JobStep
step_name è nvarchar(128).
@command_type
Tipo di comando eseguito da questo passaggio del processo. command_type è nvarchar(50), con un valore predefinito , TSql
ovvero il valore del parametro @command_type è uno script T-SQL.
Se specificato, il valore deve essere TSql
.
@command_source
Tipo di posizione in cui è archiviato il comando. command_source è nvarchar(50), con un valore predefinito , Inline
ovvero il valore del parametro @command è il testo letterale del comando.
Se specificato, il valore deve essere Inline
.
@command
Script T-SQL valido che deve essere eseguito da questo passaggio del processo. il comando è nvarchar(max), con un valore predefinito .NULL
@credential_name
Nome delle credenziali con ambito database archiviate in questo database di controllo del processo utilizzato per connettersi a ognuno dei database di destinazione all'interno del gruppo di destinazione quando questo passaggio viene eseguito. credential_name è nvarchar(128).
Quando si usa l'autenticazione di Microsoft Entra (in precedenza Azure Active Directory), omettere il parametro @credential_name , che deve essere fornito solo quando si usano credenziali con ambito database.
@target_group_name
Nome del gruppo di destinazione contenente i database di destinazione su cui verrà eseguito il passaggio del processo. target_group_name è nvarchar(128).
@initial_retry_interval_seconds
Ritardo prima del primo tentativo, se il passaggio del processo non riesce durante il tentativo di esecuzione iniziale. initial_retry_interval_seconds è int, con il valore predefinito 1.
@maximum_retry_interval_seconds
Ritardo massimo tra i tentativi. Se il ritardo tra i tentativi aumenta di dimensioni maggiori rispetto a questo valore, viene invece limitato a questo valore. maximum_retry_interval_seconds è int, con il valore predefinito 120.
@retry_interval_backoff_multiplier
Moltiplicatore da applicare al ritardo tra i tentativi se più tentativi di esecuzione del passaggio del processo hanno esito negativo. Ad esempio, se il primo tentativo ha un ritardo di 5 secondi e il moltiplicatore di backoff è 2.0, il secondo tentativo avrà un ritardo di 10 e il terzo un ritardo di 20 secondi. retry_interval_backoff_multiplier è il tipo di dati reale, con valore predefinito 2,0.
@retry_attempts
Numero di tentativi di esecuzione se il tentativo iniziale non riesce. Ad esempio, se il valore retry_attempts è 10, verranno eseguiti 1 tentativo iniziale e 10 tentativi, dando un totale di 11 tentativi. Se il tentativo di ripetizione finale ha esito negativo, l'esecuzione del processo terminerà con un lifecycle
oggetto registrato Failed
in jobs.job_executions. retry_attempts è int, con il valore predefinito 10.
@step_timeout_seconds
Tempo massimo consentito per l'esecuzione del passaggio. Se questa volta viene superata, l'esecuzione del processo terminerà con un lifecycle
di TimedOut
registrato in jobs.job_executions. step_timeout_seconds è int, con valore predefinito di 43.200 secondi (12 ore).
@output_type
In caso contrarioNULL
, il tipo di destinazione in cui viene scritto il primo set di risultati del comando. output_type è nvarchar(50), con il valore predefinito NULL
.
Se specificato, il valore deve essere SqlDatabase
.
@output_credential_name
Se non è Null, il nome delle credenziali con ambito database utilizzate per connettersi al database di destinazione di output. Deve essere specificato se output_type è uguale a SqlDatabase
. output_credential_name è nvarchar(128), con un valore predefinito .NULL
Quando si usa l'autenticazione di Microsoft Entra (in precedenza Azure Active Directory), omettere il parametro @output_credential_name , che deve essere fornito solo quando si usano credenziali con ambito database.
@output_subscription_id
ID sottoscrizione di Azure da usare per l'output. L'impostazione predefinita è la sottoscrizione dell'agente processo. output_subscription_id è un uniqueidentifier.
@output_resource_group_name
Nome del gruppo di risorse in cui risiede il database di output. L'impostazione predefinita è il gruppo di risorse dell'agente di processo. output_resource_group_name è nvarchar(128).
@output_server_name
In caso contrario NULL
, il nome DNS completo del server che contiene il database di destinazione di output, ad esempio : @output_server_name = 'server1.database.windows.net'
. Deve essere specificato se output_type è uguale a SqlDatabase
. output_server_name è nvarchar(256), con il valore predefinito NULL
.
@output_database_name
Se non NULL
è , il nome del database che contiene la tabella di destinazione di output. Deve essere specificato se output_type è uguale a SqlDatabase
. output_database_name è nvarchar(128), con il valore predefinito NULL
.
@output_schema_name
Se non NULL
è , il nome dello schema SQL che contiene la tabella di destinazione di output. Se output_type è uguale SqlDatabase
a , il valore predefinito è dbo
. output_schema_name è nvarchar(128).
@output_table_name
In caso contrario NULL
, il nome della tabella in cui verrà scritto il primo set di risultati del comando. Se la tabella non esiste già, verrà creata in base allo schema del set di risultati restituito. Deve essere specificato se output_type è uguale a SqlDatabase
. output_table_name è nvarchar(128), con un valore predefinito .NULL
Se si specifica un output_table_name, alle credenziali dell'agente di processo o con ambito database devono essere concesse le autorizzazioni necessarie per i dati CREATE TABLE e INSERT nella tabella.
@job_version PRODOTTO
Parametro di output che verrà assegnato al nuovo numero di versione del processo. job_version è int.
@max_parallelism PRODOTTO
Livello massimo di parallelismo per ogni pool elastico.
Se impostato, il passaggio del processo sarà limitato in modo da eseguire solo il numero massimo di database per ogni pool elastico. Questo vale per ogni pool elastico incluso direttamente nel gruppo di destinazione o per i pool elastici all'interno di un server incluso nel gruppo di destinazione. max_parallelism è int.
Valori del codice restituito
0
(esito positivo) o 1
(errore).
Osservazioni:
Quando sp_add_jobstep
ha esito positivo, il numero di versione corrente del processo viene incrementato. Alla successiva esecuzione del processo, verrà usata la nuova versione. Se il processo è in esecuzione, l'esecuzione non conterrà il nuovo passaggio.
- Quando si usa l'autenticazione di Microsoft Entra per eseguire l'autenticazione nei server di destinazione/database, gli argomenti @credential_name e @output_credential_name non devono essere forniti per
sp_add_jobstep
osp_update_jobstep
. - Quando si usano credenziali con ambito database per eseguire l'autenticazione nel/i server/database di destinazione, è necessario il parametro @credential_name per
sp_add_jobstep
esp_update_jobstep
. Ad esempio:@credential_name = 'job_credential'
.
Autorizzazioni
Per impostazione predefinita, questa stored procedure può essere eseguita dai membri del ruolo predefinito del server sysadmin . Solo i membri del ruolo sysadmin possono usare questa stored procedure per modificare gli attributi dei processi di proprietà di altri utenti.
Esempi
Creare un passaggio del processo per eseguire un'istruzione T-SQL
L'esempio seguente illustra come creare un processo elastico per eseguire un'istruzione T-SQL in un processo elastico. Nell'esempio seguente viene jobs.sp_add_jobstep
usato per creare un passaggio di processo nel processo denominato CreateTableTest
, da eseguire nel gruppo PoolGroup
di destinazione .
Connettersi al database job_database
ed eseguire il comando seguente:
--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';
Creare un passaggio del processo per eseguire un'istruzione T-SQL e raccogliere i risultati
Nell'esempio seguente viene illustrato come creare un processo elastico per eseguire un'istruzione T-SQL in un processo elastico e raccogliere i risultati in un database SQL di Azure. Nell'esempio seguente viene jobs.sp_add_jobstep
usato per creare un passaggio di processo nel processo denominato ResultsJob
, da eseguire nel gruppo PoolGroup
di destinazione . I risultati vengono registrati in una tabella denominata nel database denominato dbo.results_table
Results
nel server 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';