Umbraco-Datenbank wächst durch Formulardaten
Auf einen Blick
| Gilt für | Umbraco Forms 13/17 (Umbraco 13/17 LTS); Altinstallationen mit Umbraco Contour (Umbraco 4–7) |
|---|---|
| Bereich | Server-Software |
| Dauer | ca. 20 Minuten |
| Rechte | Umbraco-Administrator, Zugriff auf appsettings.json bzw. SQL Server |
| Stand | Oktober 2026 |
Wächst die Umbraco-Datenbank durch Formulardaten, liegt das fast immer an gespeicherten Einsendungen von Umbraco Forms (früher Contour): Jede Formularabsendung – auch Spam und abgebrochene mehrstufige Formulare – landet in der Datenbank und bleibt dort ohne Aufbewahrungsregel für immer. Aktuelle Umbraco-Forms-Versionen bringen dafür eine automatische Löschung mit.

Problem
- Die Umbraco-Datenbank wird stetig größer, Backups und Wiederherstellungen dauern länger.
- Im Backoffice unter Forms → Formular → Entries liegen tausende alte oder Spam-Einträge.
- In Altsystemen mit Contour verbleiben abgebrochene mehrstufige Formulare im Status PartiallySubmitted.
Ursache
Umbraco Forms speichert Einsendungen standardmäßig unbegrenzt in den Tabellen UFRecords und den zugehörigen Datentabellen. Eine Löschung findet nur statt, wenn eine Aufbewahrungsfrist konfiguriert ist. Neben dem Speicherplatz ist das auch ein Datenschutzproblem: Personenbezogene Formulardaten dürfen nach DSGVO nicht länger als nötig aufbewahrt werden.
Lösung
Variante 1: Automatische Löschung in Umbraco Forms aktivieren (empfohlen)
- Die geplante Löschung in der
appsettings.jsoneinschalten:
{
"Umbraco": {
"Forms": {
"Options": {
"ScheduledRecordDeletion": {
"Enabled": true,
"FirstRunTime": "0 3 * * *",
"Period": "1.00:00:00"
}
}
}
}
}
- Im Backoffice je Formular unter Settings die Aufbewahrungsfristen festlegen: Tage für übermittelte, genehmigte und abgelehnte Einträge (Konfigurationsnamen
DaysToRetainSubmittedRecordsFor,DaysToRetainApprovedRecordsFor,DaysToRetainRejectedRecordsFor;0= unbegrenzt). Einträge in anderen Zuständen (z. B. abgebrochene Einsendungen aus Altversionen) erfassen diese Fristen nicht – solche Einträge im Backoffice unter Entries manuell löschen. - Website neu starten. Die Löschung läuft danach täglich um 3:00 Uhr (
FirstRunTimeim Cron-Format; leer = 3 Minuten nach dem Start,Period= Intervall).
appsettings.json unter Umbraco:Forms:FormDesign:Defaults setzen. Bereits vorhandene Formulare müssen im Backoffice einzeln angepasst werden.Variante 2: Spam gar nicht erst speichern
- Formular-Einstellung „Store records locally“ deaktivieren, wenn Einsendungen nur per E-Mail-Workflow weiterverarbeitet werden – dann landet nichts in der Datenbank.
- Honeypot und Anti-Forgery-Token (in Umbraco Forms integriert) aktiv lassen und zusätzlich ein Captcha-Feld wie reCAPTCHA v3 oder hCaptcha verwenden.
Variante 3: Altsysteme mit Contour per SQL bereinigen
Auf Umbraco-7-Installationen mit Contour gibt es keine automatische Löschung. Dort lassen sich alte Einträge per Stored Procedure entfernen – vorher die Datenbank sichern:
-- Löscht Contour-Datensätze eines Formulars, die älter als @MaxAge Tage sind.
-- @FormState: 0=Opened 1=Resumed 2=PartiallySubmitted 3=Submitted 4=Approved 5=Deleted
CREATE PROCEDURE [dbo].[DeleteContourRecords]
@FormId UNIQUEIDENTIFIER,
@MaxAge INT = 50,
@FormState INT = 2,
@Limit INT = 50
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRANSACTION
CREATE TABLE #records (id UNIQUEIDENTIFIER)
INSERT INTO #records
SELECT TOP(@Limit) u.Id FROM UFRecords u
WHERE updated < GETDATE()-@MaxAge AND u.State = @FormState AND u.Form = @FormId
ORDER BY u.updated
DELETE FROM UFRecordsXml WHERE id IN (SELECT id FROM #records)
DELETE FROM UFRecords WHERE id IN (SELECT id FROM #records)
DROP TABLE #records
COMMIT
END
Aufruf, z. B. für PartiallySubmitted-Einträge älter als 180 Tage (je Lauf maximal 100):
EXECUTE DeleteContourRecords '8B045F53-352A-4708-9A36-0DC8D67FD1AB', 180, 2, 100
Hinweise
- Datenbank verkleinern: Gelöschte Einträge geben Platz innerhalb der Datenbank frei; die Datei schrumpft erst nach einer Wartung.
DBCC SHRINKDATABASEnur gezielt einsetzen, da es Indizes fragmentiert. - Contour und Umbraco 7 erhalten seit Jahren keine Sicherheitsupdates mehr. Eine Migration auf Umbraco 17 LTS mit Umbraco Forms ist dringend zu empfehlen, siehe CMS Umbraco.
- Export vor dem Löschen: Wichtige Einsendungen vorher im Backoffice als CSV/Excel exportieren.
- Bei Betrieb, Bereinigung und Upgrade von Umbraco-Websites unterstützt Sie die individuelle Softwareentwicklung von m.a.x. it.
Siehe auch
Links und Quellen
- Umbraco-Dokumentation: Konfiguration von Umbraco Forms
- Individuelle Softwareentwicklung von m.a.x. it
Über m.a.x. it Die m.a.x. Informationstechnologie AG ist seit über 30 Jahren IT-Partner mittelständischer und großer Unternehmen in München und bietet maßgeschneiderte Lösungen und Services in den Bereichen Cloud, Cybersecurity, Netzwerk, Windows, Linux und Softwareentwicklung. Sie haben eine Frage zu diesem Artikel oder brauchen Unterstützung?
