Radera loggade e-post när database mail används

När man använder database mail för att skicka e-post med sql-server så loggas varje meddelande inklusive bilagor som skickas, i msdb-databasen. Mer specifikt lagras de i en tabell som heter sysmail_mailitems.

Exempel på hur det kan se ut när man skickar e-post med database mail.

EXEC sp_send_dbmail @profile_name='MinDatabaseMailProfil',
@recipients='test@example.com',
@subject='rubrik',
@body='Mitt meddelande' 

Är man inte medveten om detta och har underdimensionerat lagringsmöjligheterna är det lätt att utrymmet tar slut vilket kan ställa till mycket problem.

Det man bör göra när database mail används är att skapa ett jobb som med jämna mellanrum rensar upp gammal e-post. Det kan även tänkas att man vill arkivera dessa e-post i annan databas än msdb innan de raderas.

För att radera den arkiverade e-posten så kan man använda nedanstående lagrade procedurer.

EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_before = @date
EXECUTE msdb.dbo.sysmail_delete_log_sp @logged_before = @date

Kommentarer inaktiverade.

%d bloggare gillar detta: