sp_purge_jobhistory (T-SQL)
Berlaku untuk: SQL Server Azure SQL Managed Instance
Menghapus catatan riwayat untuk pekerjaan di layanan SQL Server Agent.
Sintaks
sp_purge_jobhistory
{ [ @job_name = ] 'job_name' |
| [ @job_id = ] job_id }
[ , [ @oldest_date = ] oldest_date ]
Argumen
@job_name
Nama pekerjaan untuk menghapus catatan riwayat. job_name adalah sysname, dengan default NULL. Baik job_id atau job_name harus ditentukan, tetapi keduanya tidak dapat ditentukan.
Catatan
Anggota peran server tetap sysadmin atau anggota peran database tetap SQLAgentOperatorRole dapat dijalankan sp_purge_jobhistory
tanpa menentukan job_name atau job_id. Ketika pengguna sysadmin tidak menentukan argumen ini, riwayat pekerjaan untuk semua pekerjaan lokal dan multiserver dihapus dalam waktu yang ditentukan oleh oldest_date. Ketika pengguna SQLAgentOperatorRole tidak menentukan argumen ini, riwayat pekerjaan untuk semua pekerjaan lokal dihapus dalam waktu yang ditentukan oleh oldest_date.
@job_id
Nomor identifikasi pekerjaan untuk rekaman yang akan dihapus. job_id adalah uniqueidentifier, dengan default NULL
. Baik job_id atau job_name harus ditentukan, tetapi keduanya tidak dapat ditentukan.
Lihat catatan dalam deskripsi @job_name untuk informasi tentang bagaimana pengguna sysadmin atau SQLAgentOperatorRole dapat menggunakan argumen ini.
@oldest_date
Rekaman tertua yang dipertahankan dalam sejarah. oldest_date adalah datetime, dengan default NULL
. Saat oldest_date ditentukan, sp_purge_jobhistory
hanya menghapus rekaman yang lebih lama dari nilai yang ditentukan.
Mengembalikan Nilai Kode
0 (berhasil) atau 1 (kegagalan)
Tataan Hasil
Tidak
Keterangan
Setelah sp_purge_jobhistory
berhasil diselesaikan, pesan dikembalikan.
Prosedur tersimpan sp_purge_jobhistory
ini berbagi nama dengan objek serupa untuk layanan Azure Elastic Jobs untuk Azure SQL Database. Untuk informasi tentang versi pekerjaan elastis, lihat jobs.sp_purge_jobhistory (Azure Elastic Jobs) (Transact-SQL).
Izin
Secara default, hanya anggota peran server tetap sysadmin atau peran database tetap SQLAgentOperatorRole yang dapat menjalankan prosedur tersimpan ini.
Anggota sysadmin dapat menghapus menyeluruh riwayat pekerjaan untuk semua pekerjaan lokal dan multiserver. Anggota SQLAgentOperatorRole dapat menghapus menyeluruh riwayat pekerjaan hanya untuk semua pekerjaan lokal.
Pengguna lain, termasuk anggota SQLAgentUserRole dan anggota SQLAgentReaderRole, harus secara eksplisit diberikan izin EXECUTE pada sp_purge_jobhistory
. Setelah diberikan izin EXECUTE pada prosedur tersimpan ini, pengguna ini hanya dapat menghapus menyeluruh riwayat untuk pekerjaan yang mereka miliki.
Peran database tetap SQLAgentUserRole, SQLAgentReaderRole, dan SQLAgentOperatorRole ada dalam msdb
database. Untuk detail tentang izin mereka, lihat Peran Database Tetap Agen SQL Server.
Contoh
J. Menghapus riwayat untuk pekerjaan tertentu
Contoh berikut menghapus riwayat untuk pekerjaan bernama NightlyBackups
.
USE msdb ;
GO
EXEC dbo.sp_purge_jobhistory
@job_name = N'NightlyBackups' ;
GO
B. Menghapus riwayat untuk semua pekerjaan
Catatan
Hanya anggota peran server tetap sysadmin dan anggota SQLAgentOperatorRole yang dapat menghapus riwayat untuk semua pekerjaan. Ketika pengguna sysadmin menjalankan prosedur tersimpan ini tanpa parameter, riwayat pekerjaan untuk semua pekerjaan lokal dan multiserver dihapus menyeluruh. Ketika pengguna SQLAgentOperatorRole menjalankan prosedur tersimpan ini tanpa parameter, hanya riwayat pekerjaan untuk semua pekerjaan lokal yang dihapus menyeluruh.
Contoh berikut menjalankan prosedur tanpa parameter untuk menghapus semua rekaman riwayat.
USE msdb ;
GO
EXEC dbo.sp_purge_jobhistory ;
GO