sp_purge_jobhistory (T-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Menghapus catatan riwayat untuk pekerjaan di layanan SQL Server Agent.

Konvensi sintaks transact-SQL

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  

Langkah berikutnya