Udostępnij za pośrednictwem


sysmail_delete_mailitems_sp (Transact-SQL)

Dotyczy:SQL Server

Trwale usuwa wiadomości e-mail z wewnętrznych tabel poczty bazy danych.

Transact-SQL konwencje składni

Składnia

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

Argumenty (w programowaniu)

[ @sent_before = ] 'sent_before'

Usuwa wiadomości e-mail z datą i godziną podaną jako argument @sent_before . @sent_before to data/godzina z wartością domyślną NULL . NULL wskazuje wszystkie daty.

[ @sent_status = ] 'sent_status'

Usuwa wiadomości e-mail typu określonego przez @sent_status. @sent_status jest varchar(8) bez wartości domyślnej. Prawidłowe wpisy to:

  • sent
  • unsent
  • retrying
  • failed.

NULL wskazuje wszystkie stany.

Zwracanie wartości kodu

0 (powodzenie) lub 1 (niepowodzenie).

Uwagi

Wiadomości poczty bazy danych i ich załączniki są przechowywane w msdb bazie danych. Komunikaty powinny być okresowo usuwane, aby zapobiec msdb wzrostowi większemu niż oczekiwano i zgodności z programem przechowywania dokumentów organizacji. sysmail_delete_mailitems_sp Użyj procedury składowanej, aby trwale usunąć wiadomości e-mail z tabel Poczty bazy danych. Opcjonalny argument umożliwia usunięcie tylko starszych wiadomości e-mail, podając datę i godzinę. Wiadomości e-mail starsze niż ten argument zostaną usunięte. Inny opcjonalny argument umożliwia usunięcie tylko wiadomości e-mail określonego typu, określonego jako argument @sent_status . Musisz podać argument dla @sent_before lub @sent_status. Aby usunąć wszystkie komunikaty, użyj polecenia @sent_before = GETDATE();.

Usunięcie wiadomości e-mail powoduje również usunięcie załączników związanych z tymi wiadomościami. Usunięcie wiadomości e-mail nie powoduje usunięcia odpowiednich wpisów w pliku sysmail_event_log. Użyj sysmail_delete_log_sp , aby usunąć elementy z dziennika.

Uprawnienia

Domyślnie ta procedura składowana jest udzielana do wykonania członkom poza stałą rolą serwera sysadmin i DatabaseMailUserRole. Członkowie stałej roli serwera sysadmin mogą wykonać tę procedurę, aby usunąć wiadomości e-mail wysyłane przez wszystkich użytkowników. Członkowie elementu DatabaseMailUserRole mogą usuwać tylko wiadomości e-mail wysyłane przez tego użytkownika.

Przykłady

Odp. Usuń wszystkie wiadomości e-mail

Poniższy przykład usuwa wszystkie wiadomości e-mail w systemie poczty bazy danych.

DECLARE @GETDATE AS DATETIME;

SET @GETDATE = GETDATE();

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

B. Usuwanie najstarszych wiadomości e-mail

Poniższy przykład usuwa wiadomości e-mail w dzienniku poczty bazy danych, które są starsze niż 9 października 2022 r.

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

C. Usuń wszystkie wiadomości e-mail określonego typu

Poniższy przykład usuwa wszystkie nieudane wiadomości e-mail w dzienniku poczty bazy danych.

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