sysmail_delete_mailitems_sp (T-SQL)

Berlaku untuk:SQL Server

Menghapus pesan email secara permanen dari tabel internal Email Database.

Konvensi sintaks transact-SQL

Sintaks

sysmail_delete_mailitems_sp [ [ @sent_before = ] 'sent_before' ]
    [ , [ @sent_status = ] 'sent_status' ]
[ ; ]

Argumen

[ @sent_before = ] 'sent_before'

Menghapus email hingga tanggal dan waktu yang disediakan sebagai argumen @sent_before . @sent_before adalah datetime dengan NULL sebagai default. NULL menunjukkan semua tanggal.

[ @sent_status = ] 'sent_status'

Menghapus email tipe yang ditentukan oleh @sent_status. @sent_status adalah varchar(8) tanpa default. Entri yang valid adalah:

  • sent
  • unsent
  • retrying
  • failed.

NULL menunjukkan semua status.

Mengembalikan nilai kode

0 (berhasil) atau 1 (kegagalan).

Keterangan

Pesan Email Database dan lampirannya disimpan dalam msdb database. Pesan harus dihapus secara berkala untuk mencegah msdb tumbuh lebih besar dari yang diharapkan dan mematuhi program retensi dokumen organisasi Anda. Gunakan prosedur tersimpan sysmail_delete_mailitems_sp untuk menghapus pesan email secara permanen dari tabel Email Database. Argumen opsional memungkinkan Anda untuk menghapus hanya email yang lebih lama dengan memberikan tanggal dan waktu. Email yang lebih lama dari argumen tersebut akan dihapus. Argumen opsional lainnya memungkinkan Anda hanya menghapus email dari jenis tertentu, yang ditentukan sebagai argumen @sent_status . Anda harus memberikan argumen baik untuk @sent_before atau @sent_status. Untuk menghapus semua pesan, gunakan @sent_before = GETDATE();.

Menghapus email juga menghapus lampiran yang terkait dengan pesan tersebut. Menghapus email tidak menghapus entri terkait di sysmail_event_log. Gunakan sysmail_delete_log_sp untuk menghapus item dari log.

Izin

Secara default, prosedur tersimpan ini diberikan untuk eksekusi kepada anggota dari peran server tetap sysadmin dan DatabaseMailUserRole. Anggota peran server tetap sysadmin dapat menjalankan prosedur ini untuk menghapus email yang dikirim oleh semua pengguna. Anggota DatabaseMailUserRole hanya dapat menghapus email yang dikirim oleh pengguna tersebut.

Contoh

J. Hapus semua email

Contoh berikut menghapus semua email dalam sistem Email Database.

DECLARE @GETDATE DATETIME;

SET @GETDATE = GETDATE();

EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_before = @GETDATE;
GO

B. Menghapus email terlama

Contoh berikut menghapus email di log Email Database yang lebih lama dari 9 Oktober 2022.

EXEC msdb.dbo.sysmail_delete_mailitems_sp
    @sent_before = 'October 9, 2022';
GO

C. Menghapus semua email dengan tipe tertentu

Contoh berikut menghapus semua email yang gagal di log Email Database.

EXEC msdb.dbo.sysmail_delete_mailitems_sp
    @sent_status = 'failed';
GO