Seite 1 von 1

Datenbank Bereinigen

Verfasst: Mo Jan 09, 2023 8:43 am
von Sebastian K
Guten Morgen.
Hat vielleicht jemand ein SQL-Skript in der Schublade welches die Datenbank bereinigt.
Alle (löschbaren) Einträge nach X Jahren rauswerfen. Wäre schon sinnvoll.

Re: Datenbank Bereinigen

Verfasst: Mo Jan 09, 2023 3:05 pm
von twahl
Hallo,

ein fertiges Script haben wir nicht. Eventuell müsste man auch zunächst schauen in welchen Tabellen relativ viele Daten liegen z.B. über ein MS SQL Management Studio.

Gerne ist auch die Option die Client Command Ausführungsergebnisse aufzuräumen noch nicht aktiv, das kann man unter System->Einstellungen->ACMP Server->Geplante Serveraufgaben in dem Job "Bereinigung der Client Command Logs" konfigurieren.

Re: Datenbank Bereinigen

Verfasst: Do Jan 12, 2023 3:09 pm
von Sebastian K
Moin Herr Wahl.

Ich habe eben noch mal manuell die Bereinigung angestoßen wie empfohlen.

beim Defender hat es was gebracht, aber keine Veränderung bei CLT_SCRIPT_...

VG

Re: Datenbank Bereinigen

Verfasst: Mo Jan 16, 2023 3:14 pm
von twahl
Hallo,

die CLT_SCRIPT_EXECRESULTS sollten eigentlich nach der Umstellung der geplanten Serveraufgabe und der Ausführung dieser bereinigt werden.

Mit folgender Abfrage kann man schauen wie viele Ausführungen in den letzten ~30 Tagen liegen:
select count(*) from CLT_SCRIPT_EXECRESULT where rundate between cast(getdate()-28 as float) and cast(getdate()+3 as float)

Re: Datenbank Bereinigen

Verfasst: Di Jan 17, 2023 3:00 pm
von Sebastian K
Hallo Herr Wahl.

Ihre Abfrage liefert. "26819".

in der Zwischenzeit ist die Tabelle aber nicht kleiner sondern größer geworden.

Gruß

S.Klempin

Re: Datenbank Bereinigen

Verfasst: Mo Jan 30, 2023 11:47 am
von twahl
Hallo,

wenn sehr viele Ergebnisse bereits in der Tabelle sind, könnte es sein, dass die Bereinigung in einen Timeout läuft.

Man könnte einmal manuell die Tabelle bereinigen (das Statement ist nicht für Performance optimiert):
delete from CLT_SCRIPT_EXECRESULT where resultid not in (
select resultid from CLT_SCRIPT_EXECRESULT where rundate-2 > cast(getdate()-32 as float) )

Bzw in kleineren Schritten:
delete top(50000) from CLT_SCRIPT_EXECRESULT where resultid not in (
select resultid from CLT_SCRIPT_EXECRESULT where rundate-2 > cast(getdate()-32 as float) )