sp_add_job (T-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Membuat pekerjaan baru yang dijalankan oleh layanan SQL Server Agent.

Konvensi sintaks transact-SQL

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 OUTPUT

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) (Transact-SQL).

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