Vergessene Jobs: eMails bereinigen
Wer so wie ich regelmäßig eMails über den SQL Server verschickt und da auch immer noch einiges an Daten mit dazu packt, wird bald ein gewisses Wachstum der msdb feststellen. Es gibt mehrere Möglichkeiten, dem entgegen zu wirken.
Die Ursache
Kopien von Datenbank-E-Mail-Nachrichten und deren Anlagen werden zusammen mit dem Datenbank-E-Mail-Ereignisprotokoll in msdb-Tabellen gespeichert. Das betrifft dann vor allem diese Tabellen in der msdb:
- dbo.sysmail_mailitems
- dbo.sysmail_attachments
schaut man sich mal die Daten im Überblick an und auch den verwendeten Platz, wird man feststellen, dass da einiges zusammen kommen kann:
SELECT MIN(sent_date) AS Anfang, COUNT(*) AS Anzahl
FROM dbo.sysmail_mailitems;
SELECT MIN(last_mod_date) AS Anfang, COUNT(*) AS Anzahl
FROM dbo.sysmail_attachments;
EXEC sp_spaceused 'dbo.sysmail_mailitems';
EXEC sp_spaceused 'dbo.sysmail_attachments';
Die Bereinigung
Microsoft stellt uns hierfür direkt zwei Stored Procedures zur Verfügung:
- sysmail_delete_mailitems_sp
- sysmail_delete_log_sp
Wie in der Dokumentation nachzulesen, löscht sysmail_delete_mailitems_sp E-Mail-Nachrichten dauerhaft aus den internen Tabellen der Datenbank-E-Mail, wohingegen sysmail_delete_log_sp Ereignisse aus dem Datenbank-E-Mail-Protokoll löscht.
Beide Prozeduren kann man mit einem Datum versorgen und so z. B. alle Einträge löschen kann, die älter als 100 Tage sind:
DECLARE @DeleteBeforeDate DATETIME;
SELECT @DeleteBeforeDate = DATEADD(d,-100, GETDATE());
EXEC msdb..sysmail_delete_mailitems_sp @sent_before = @DeleteBeforeDate;
EXEC msdb..sysmail_delete_log_sp @logged_before = @DeleteBeforeDate;
Am besten erstellt man sich einen SQL Server Agent Auftrag und lässt diese Bereinigung dann einmal in der Woche laufen.
Zusatzinfos
Wer diese Einträge noch woanders archivieren will, bevor er sie löscht, kann auf diese Anleitung zum erstellen eines Auftrags des SQL Server-Agents zum Archivieren von Datenbank-E-Mail-Nachrichten und Ereignisprotokollen zurück greifen.
Print article | This entry was posted by cmu on 18.09.14 at 13:47:00 . Follow any responses to this post through RSS 2.0. |