Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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