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.
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 JobStep
default . step_name adalah nvarchar(128).
@command_type
Jenis perintah yang dijalankan oleh langkah pekerjaan ini. command_type adalah nvarchar(50), dengan nilai TSql
default , 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 Inline
default , 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 antara percobaan ulang akan tumbuh lebih besar dari nilai ini, itu 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 NULL
default .
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 NULL
default .
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 HASIL
Parameter output yang akan ditetapkan nomor versi pekerjaan baru. job_version int.
@max_parallelism HASIL
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
(berhasil) 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
atausp_update_jobstep
. - Saat menggunakan kredensial cakupan database untuk mengautentikasi ke server target/database, parameter @credential_name diperlukan untuk
sp_add_jobstep
dansp_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 PoolGroup
target .
Sambungkan 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 PoolGroup
target . 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';