sp_add_job (T-SQL)
Berlaku untuk: SQL Server Azure SQL Managed Instance
Membuat pekerjaan baru yang dijalankan oleh layanan SQL Server Agent.
Penting
Pada Azure SQL Managed Instance, sebagian besar, tetapi tidak semua fitur SQL Server Agent saat ini didukung. Lihat Perbedaan T-SQL Azure SQL Managed Instance dari SQL Server untuk detailnya.
Sintaks
sp_add_job
[ @job_name = ] N'job_name'
[ , [ @enabled = ] enabled ]
[ , [ @description = ] N'description' ]
[ , [ @start_step_id = ] step_id ]
[ , [ @category_name = ] 'category' ]
[ , [ @category_id = ] category_id ]
[ , [ @owner_login_name = ] 'login' ]
[ , [ @notify_level_eventlog = ] eventlog_level ]
[ , [ @notify_level_email = ] email_level ]
[ , [ @notify_level_netsend = ] netsend_level ]
[ , [ @notify_level_page = ] page_level ]
[ , [ @notify_email_operator_name = ] 'email_name' ]
[ , [ @notify_netsend_operator_name = ] 'netsend_name' ]
[ , [ @notify_page_operator_name = ] 'page_name' ]
[ , [ @delete_level = ] delete_level ]
[ , [ @job_id = ] job_id OUTPUT ]
[ ; ]
Argumen
@job_name
Nama pekerjaan. Nama harus unik dan tidak boleh berisi karakter persen (%
). @job_name adalah nvarchar(128), tanpa default. Harus diisi.
@enabled
Menunjukkan status pekerjaan yang ditambahkan. diaktifkan adalah tinyint, dengan default 1
(diaktifkan). Jika 0
, pekerjaan tidak diaktifkan dan tidak berjalan sesuai dengan jadwalnya; namun, pekerjaan dapat dijalankan secara manual.
@description
Deskripsi dari pekerjaan. @description adalah nvarchar(512), dengan default NULL
. Jika @description dihilangkan, N'No description available'
digunakan.
@start_step_id
Nomor identifikasi langkah pertama yang dijalankan untuk pekerjaan tersebut. @start_step_id int, dengan default 1
.
@category_name
Kategori untuk pekerjaan tersebut. @category_name adalah sysname, dengan default NULL
.
@category_id
Mekanisme independen bahasa untuk menentukan kategori pekerjaan. @category_id int, dengan default NULL
.
@owner_login_name
Nama login yang memiliki pekerjaan. @owner_login_name adalah sysname, dengan default NULL
, yang ditafsirkan sebagai nama login saat ini. Hanya anggota peran server tetap sysadmin yang dapat mengatur atau mengubah nilai untuk @owner_login_name. Jika pengguna yang bukan anggota kumpulan peran sysadmin atau mengubah nilai @owner_login_name, eksekusi prosedur tersimpan ini gagal dan kesalahan dikembalikan.
@notify_level_eventlog
Nilai yang menunjukkan kapan harus menempatkan entri di log aplikasi Microsoft Windows untuk pekerjaan ini. @notify_level_eventlog int, dan bisa menjadi salah satu nilai berikut:
Nilai | Deskripsi |
---|---|
0 |
Tidak pernah |
1 |
Pada keberhasilan |
2 (default) |
Pada kegagalan |
3 |
Selalu |
@notify_level_email
Nilai yang menunjukkan kapan harus mengirim email setelah menyelesaikan pekerjaan ini. @notify_level_email int, dengan default 0
, yang menunjukkan tidak pernah. @notify_level_email menggunakan nilai yang sama dengan @notify_level_eventlog.
@notify_level_netsend
Nilai yang menunjukkan kapan harus mengirim pesan jaringan setelah pekerjaan ini selesai. @notify_level_netsend int, dengan default 0
, yang menunjukkan tidak pernah. @notify_level_netsend menggunakan nilai yang sama dengan @notify_level_eventlog.
@notify_level_page
Nilai yang menunjukkan kapan harus mengirim halaman setelah penyelesaian pekerjaan ini. @notify_level_page int, dengan default 0
, yang menunjukkan tidak pernah. @notify_level_page menggunakan nilai yang sama dengan @notify_level_eventlog.
@notify_email_operator_name
Nama email orang yang akan dikirimi email ketika @notify_email_operator_name tercapai. @notify_email_operator_name adalah sysname, dengan default NULL
.
@notify_netsend_operator_name
Nama operator yang dikirimi pesan jaringan setelah pekerjaan ini selesai. @notify_netsend_operator_name adalah sysname, dengan default NULL
.
@notify_page_operator_name
Nama orang ke halaman setelah menyelesaikan pekerjaan ini. @notify_page_operator_name adalah sysname, dengan default NULL
.
@delete_level
Nilai yang menunjukkan kapan harus menghapus pekerjaan. delete_value int, dengan default 0
, yang berarti tidak pernah. @delete_level menggunakan nilai yang sama dengan @notify_level_eventlog.
Catatan
Ketika @delete_level adalah 3
, pekerjaan hanya dijalankan sekali, terlepas dari jadwal apa pun yang ditentukan untuk pekerjaan tersebut. Selain itu, jika pekerjaan menghapus dirinya sendiri, semua riwayat untuk pekerjaan juga dihapus.
@job_id HASIL
Nomor identifikasi pekerjaan yang ditetapkan untuk pekerjaan jika berhasil dibuat. @job_id adalah variabel output dari jenis pengidentifikasi unik, dengan default NULL
.
Mengembalikan nilai kode
0
(berhasil) atau 1
(kegagalan).
Tataan hasil
Tidak ada.
Keterangan
@originating_server ada di sp_add_job
, tetapi tidak tercantum di bawah Argumen. @originating_server dicadangkan untuk penggunaan internal.
Setelah sp_add_job
dijalankan untuk menambahkan pekerjaan, sp_add_jobstep
dapat digunakan untuk menambahkan langkah-langkah yang melakukan aktivitas untuk pekerjaan tersebut. sp_add_jobschedule
dapat digunakan untuk membuat jadwal yang digunakan layanan SQL Server Agent untuk menjalankan pekerjaan.
Gunakan sp_add_jobserver
untuk mengatur instans SQL Server tempat pekerjaan dijalankan, dan sp_delete_jobserver
untuk menghapus pekerjaan dari instans SQL Server. Jika pekerjaan dijalankan pada satu atau beberapa server target di lingkungan multiserver, gunakan sp_apply_job_to_targets
untuk mengatur server target atau grup server target untuk pekerjaan tersebut. Untuk menghapus pekerjaan dari server target atau grup server target, gunakan sp_remove_job_from_targets
. Fitur Administrasi Multi Server (MSX/TSX) tidak didukung pada Azure SQL Managed Instance.
SQL Server Management Studio menyediakan cara grafis yang mudah untuk mengelola pekerjaan, dan merupakan cara yang direkomendasikan untuk membuat dan mengelola infrastruktur pekerjaan.
Prosedur tersimpan sp_add_job
ini berbagi nama dengan objek serupa untuk layanan Azure Elastic Jobs untuk Azure SQL Database. Untuk informasi tentang versi pekerjaan elastis, lihat jobs.sp_add_job (Azure Elastic Jobs).
Izin
Prosedur tersimpan ini dimiliki oleh peran db_owner . Anda dapat memberikan EXECUTE
izin untuk pengguna mana pun, tetapi izin ini dapat ditimpa selama peningkatan SQL Server.
Pengguna lain harus diberikan salah satu peran database tetap SQL Server Agent berikut dalam msdb
database:
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
Untuk detail tentang izin peran ini, lihat Peran Database Tetap Agen SQL Server.
Hanya anggota peran server tetap sysadmin yang dapat mengatur atau mengubah nilai untuk @owner_login_name. Jika pengguna yang bukan anggota kumpulan peran sysadmin atau mengubah nilai @owner_login_name, eksekusi prosedur tersimpan ini gagal dan kesalahan dikembalikan.
Contoh
J. Menambahkan pekerjaan
Contoh ini menambahkan pekerjaan baru bernama NightlyBackups
.
USE msdb;
GO
EXEC dbo.sp_add_job @job_name = N'NightlyBackups';
GO
B. Menambahkan pekerjaan dengan pager, email, dan informasi pengiriman bersih
Contoh ini membuat pekerjaan bernama Ad hoc Sales Data Backup
yang memberi tahu François Ajenstat
(menurut pager, email, atau pesan pop-up jaringan) jika pekerjaan gagal, dan menghapus pekerjaan setelah berhasil diselesaikan.
Catatan
Contoh ini mengasumsikan bahwa operator bernama François Ajenstat
dan login bernama françoisa
sudah ada.
USE msdb;
GO
EXEC dbo.sp_add_job
@job_name = N'Ad hoc Sales Data Backup',
@enabled = 1,
@description = N'Ad hoc backup of sales data',
@owner_login_name = N'françoisa',
@notify_level_eventlog = 2,
@notify_level_email = 2,
@notify_level_netsend = 2,
@notify_level_page = 2,
@notify_email_operator_name = N'François Ajenstat',
@notify_netsend_operator_name = N'François Ajenstat',
@notify_page_operator_name = N'François Ajenstat',
@delete_level = 1;
GO