diff --git a/persistence/sql/persister.go b/persistence/sql/persister.go
index fa553cd559f5..034d37bd39d6 100644
--- a/persistence/sql/persister.go
+++ b/persistence/sql/persister.go
@@ -237,6 +237,12 @@ func (p *Persister) CleanupDatabase(ctx context.Context, wait time.Duration, old
 	}
 	time.Sleep(wait)
 
+	p.r.Logger().Println("Cleaning seen selfservice errors")
+	if err := p.ClearErrorContainers(ctx, older, false); err != nil {
+		return err
+	}
+	time.Sleep(wait)
+
 	p.r.Logger().Println("Successfully cleaned up the latest batch of the SQL database! " +
 		"This should be re-run periodically, to be sure that all expired data is purged.")
 	return nil
diff --git a/persistence/sql/persister_session.go b/persistence/sql/persister_session.go
index 7cbd968f50a2..d53be8c52e8a 100644
--- a/persistence/sql/persister_session.go
+++ b/persistence/sql/persister_session.go
@@ -428,7 +428,7 @@ func (p *Persister) DeleteExpiredSessions(ctx context.Context, expiresAt time.Ti
 
 	//#nosec G201 -- TableName is static
 	err = p.GetConnection(ctx).RawQuery(fmt.Sprintf(
-		"DELETE FROM %s WHERE id in (SELECT id FROM (SELECT id FROM %s c WHERE expires_at <= ? and nid = ? ORDER BY expires_at ASC LIMIT %d ) AS s )",
+		"DELETE FROM %s WHERE id in (SELECT id FROM (SELECT id FROM %s c WHERE (expires_at <= ? or active = false) and nid = ? ORDER BY expires_at ASC LIMIT %d ) AS s )",
 		new(session.Session).TableName(ctx),
 		new(session.Session).TableName(ctx),
 		limit,