jobs.sp_add_jobstep (Pekerjaan Azure Elastic) (Transact-SQL)

Berlaku untuk:Azure SQL Database

Menambahkan langkah ke pekerjaan yang sudah ada di layanan Azure Elastic Jobs untuk Azure SQL Database. Gunakan jobs.sp_update_jobstep untuk memodifikasi langkah-langkah pekerjaan elastis yang ada.

Prosedur tersimpan sp_add_jobstep ini berbagi nama dengan objek serupa di SQL Server untuk layanan SQL Server Agent. Untuk informasi tentang versi SQL Server Agent, lihat sp_add_jobstep (Transact-SQL).

Konvensi sintaks transact-SQL

Sintaks

[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 ]

Argumen

@job_name

Nama pekerjaan untuk menambahkan langkah. job_name adalah nvarchar(128).

@step_id

Nomor identifikasi urutan untuk langkah pekerjaan. Nomor identifikasi langkah dimulai dari 1 dan tahapan tanpa celah. Jika langkah yang ada sudah memiliki ID ini, maka langkah tersebut dan semua langkah berikut akan membuat ID mereka bertahap sehingga langkah baru ini dapat dimasukkan ke dalam urutan. Jika tidak ditentukan, step_id akan secara otomatis ditetapkan ke yang terakhir dalam urutan langkah. step_id adalah int.

@step_name

Nama langkah. Harus ditentukan, kecuali untuk langkah pertama pekerjaan yang (untuk kenyamanan) memiliki nama JobStepdefault . step_name adalah nvarchar(128).

@command_type

Jenis perintah yang dijalankan oleh langkah pekerjaan ini. command_type adalah nvarchar(50), dengan nilai TSqldefault , yang berarti bahwa nilai parameter @command_type adalah skrip T-SQL.

Jika ditentukan, nilainya harus TSql.

@command_source

Jenis lokasi tempat perintah disimpan. command_source adalah nvarchar(50), dengan nilai Inlinedefault , yang berarti bahwa nilai parameter @command adalah teks harfiah dari perintah.

Jika ditentukan, nilainya harus Inline.

@command

Skrip T-SQL yang valid yang akan dijalankan oleh langkah pekerjaan ini. perintah adalah nvarchar(max), dengan default NULL.

@credential_name

Nama kredensial cakupan database yang disimpan dalam database kontrol pekerjaan ini yang digunakan untuk menyambungkan ke setiap database target dalam grup target saat langkah ini dijalankan. credential_name adalah nvarchar(128).

Saat menggunakan autentikasi Microsoft Entra (sebelumnya Azure Active Directory), hilangkan parameter @credential_name , yang seharusnya hanya disediakan saat menggunakan kredensial cakupan database.

@target_group_name

Nama grup target yang berisi database target tempat langkah pekerjaan akan dijalankan. target_group_name adalah nvarchar(128).

@initial_retry_interval_seconds

Penundaan sebelum upaya percobaan ulang pertama, jika langkah pekerjaan gagal pada upaya pelaksanaan awal. initial_retry_interval_seconds int, dengan nilai default 1.

@maximum_retry_interval_seconds

Penundaan maksimum antara upaya percobaan ulang. Jika penundaan di antara percobaan ulang menjadi lebih besar dari nilai ini, maka akan dibatasi ke nilai ini sebagai gantinya. maximum_retry_interval_seconds int, dengan nilai default 120.

@retry_interval_backoff_multiplier

Pengali yang akan diterapkan ke penundaan percobaan ulang jika beberapa upaya pelaksanaan langkah pekerjaan gagal. Misalnya, jika percobaan ulang pertama memiliki penundaan 5 detik dan pengali backoff adalah 2,0, maka percobaan ulang kedua akan memiliki penundaan 10 detik dan percobaan ulang ketiga akan memiliki penundaan 20 detik. retry_interval_backoff_multiplier adalah jenis data nyata, dengan nilai default 2.0.

@retry_attempts

Jumlah pelaksanaan percobaan ulang jika upaya awal gagal. Misalnya, jika nilai retry_attempts adalah 10, maka akan ada 1 upaya awal dan 10 upaya coba lagi, memberikan total 11 upaya. Jika upaya coba lagi terakhir gagal, maka eksekusi pekerjaan akan berakhir dengan lifecycle yang Failed direkam dalam jobs.job_executions. retry_attempts int, dengan nilai default 10.

@step_timeout_seconds

Jumlah waktu maksimum yang diperbolehkan untuk menjalankan langkah tersebut. Jika waktu ini terlampaui, maka eksekusi pekerjaan akan berakhir dengan lifecycle yang TimedOut dicatat dalam jobs.job_executions. step_timeout_seconds int, dengan nilai default 43.200 detik (12 jam).

@output_type

Jika tidak NULL, jenis tujuan tempat tataan hasil pertama perintah ditulis. output_type adalah nvarchar(50), dengan default NULL.

Jika ditentukan, nilainya harus SqlDatabase.

@output_credential_name

Jika tidak null, nama kredensial cakupan database yang digunakan untuk menyambungkan ke database tujuan output. Harus ditentukan jika output_type sama dengan SqlDatabase. output_credential_name adalah nvarchar(128), dengan nilai NULLdefault .

Saat menggunakan autentikasi Microsoft Entra (sebelumnya Azure Active Directory), hilangkan parameter @output_credential_name , yang seharusnya hanya disediakan saat menggunakan kredensial cakupan database.

@output_subscription_id

ID langganan Azure yang akan digunakan untuk output. Default ke langganan agen pekerjaan. output_subscription_id adalah pengidentifikasi unik.

@output_resource_group_name

Nama grup sumber daya tempat database output berada. Default ke grup sumber daya agen pekerjaan. output_resource_group_name adalah nvarchar(128).

@output_server_name

Jika tidak NULL, nama DNS server yang sepenuhnya memenuhi syarat yang berisi database tujuan output, misalnya: @output_server_name = 'server1.database.windows.net'. Harus ditentukan jika output_type sama dengan SqlDatabase. output_server_name adalah nvarchar(256), dengan default NULL.

@output_database_name

Jika tidak NULL, nama database yang berisi tabel tujuan output. Harus ditentukan jika output_type sama dengan SqlDatabase. output_database_name adalah nvarchar(128), dengan default NULL.

@output_schema_name

Jika tidak NULL, nama skema SQL yang berisi tabel tujuan output. Jika output_type sama dengan SqlDatabase, nilai defaultnya adalah dbo . output_schema_name adalah nvarchar(128).

@output_table_name

Jika tidak NULL, nama tabel tempat tataan hasil pertama perintah akan ditulis. Jika tabel belum ada, tabel akan dibuat berdasarkan skema tataan hasil yang dikembalikan. Harus ditentukan jika output_type sama dengan SqlDatabase. output_table_name adalah nvarchar(128), dengan nilai NULLdefault .

Jika menentukan output_table_name, UMI Agen Pekerjaan atau kredensial cakupan database harus diberikan izin yang diperlukan untuk MEMBUAT TABEL dan MENYISIPKAN data ke dalam tabel.

@job_version OUTPUT

Parameter output yang akan ditetapkan nomor versi pekerjaan baru. job_version int.

@max_parallelism OUTPUT

Tingkat maksimum paralelisme per kumpulan elastis.

Jika diatur, maka langkah pekerjaan akan dibatasi untuk hanya berjalan pada jumlah maksimum dari banyak database per kumpulan elastis. Ini berlaku untuk setiap kumpulan elastis yang secara langsung disertakan dalam grup target atau ke kumpulan elastis di dalam server yang disertakan dalam grup target. max_parallelism int.

Mengembalikan Nilai Kode

0 (keberhasilan) atau 1 (kegagalan)

Keterangan

Ketika sp_add_jobstep berhasil, nomor versi pekerjaan saat ini akan dinaikkan. Saat pekerjaan selanjutnya dijalankan, versi baru akan digunakan. Jika pekerjaan saat ini dijalankan, pelaksanaan itu tidak akan berisi langkah baru.

  • Saat menggunakan autentikasi Microsoft Entra untuk mengautentikasi ke server target/database, argumen @credential_name dan @output_credential_name tidak boleh disediakan untuk sp_add_jobstep atau sp_update_jobstep.
  • Saat menggunakan kredensial cakupan database untuk mengautentikasi ke server target/database, parameter @credential_name diperlukan untuk sp_add_jobstep dan sp_update_jobstep. Contohnya,@credential_name = 'job_credential'.

Izin

Secara default, anggota peran server tetap sysadmin dapat menjalankan prosedur tersimpan ini. Hanya anggota sysadmin yang dapat menggunakan prosedur tersimpan ini untuk mengedit atribut pekerjaan yang dimiliki oleh pengguna lain.

Contoh

Membuat langkah pekerjaan untuk menjalankan pernyataan T-SQL

Contoh berikut menunjukkan cara membuat pekerjaan elastis untuk menjalankan pernyataan T-SQL dalam pekerjaan elastis. Contoh berikut menggunakan jobs.sp_add_jobstep untuk membuat langkah pekerjaan dalam pekerjaan bernama CreateTableTest, untuk dijalankan pada grup PoolGrouptarget .

Koneksi ke job_database dan jalankan perintah berikut:

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

Membuat langkah pekerjaan untuk menjalankan pernyataan T-SQL dan mengumpulkan hasil

Contoh berikut menunjukkan cara membuat pekerjaan elastis untuk menjalankan pernyataan T-SQL dalam pekerjaan elastis, dan mengumpulkan hasilnya di Azure SQL Database. Contoh berikut menggunakan jobs.sp_add_jobstep untuk membuat langkah pekerjaan dalam pekerjaan bernama ResultsJob, untuk dijalankan pada grup PoolGrouptarget . Hasilnya direkam dalam tabel bernama dbo.results_table dalam database bernama Results di 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';