Ă„nderungsprotokollposten (Change Log Entry)

Bild Microsoft Dynamics NAV 2017

Ă„nderungsprotokollposten (Change Log Entry)

Beitragvon riffaquarium » 9. Mai 2023 08:40

Hallo Zusammen

Ich habe zwei Test Mandanten wo ich gerne das Änderungsprotokollposten (Change Log Entry) komplett löschen möchte.
beide haben rund 15 Mill Einträge drin.

Wenn ich das ja über Nav selber lösche dauert das ja ewig. Wie kann ich das über den SQL auf eine schnelle Art und Weise löschen ?

Danke Euch
Dan
riffaquarium
 
Beiträge: 328
Registriert: 13. September 2010 23:43
Realer Name: Daniel
Arbeitsort: Schinznach Dorf
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV 2017

Re: Ă„nderungsprotokollposten (Change Log Entry)

Beitragvon m_schneider » 9. Mai 2023 10:20

Code: Alles auswählen
TRUNCATE TABLE [Mandant$Change Log Entry]
MfG Michael
Benutzeravatar
m_schneider
 
Beiträge: 2141
Registriert: 20. Januar 2009 14:36
Realer Name: Michael Schneider
Arbeitsort: Treuen
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2017

Re: Ă„nderungsprotokollposten (Change Log Entry)

Beitragvon BastianB » 9. Mai 2023 10:26

Hi Dan,

ich hatte das gleiche Probleme, jedoch waren es bei mir ca. 440 Mio. Datensätze. Ich habe eine Codeunit in die Aufgabenwarteschlange eingebunden. Diese hatte im Hintergrund die Tabelle gelöscht.
Wichtig: dabei wurde nach X Löschungen immer ein Commit gemacht! Ich hatte sicherheitshalber auch noch ein "kurzes" Sleep nach X Löschungen eingebaut. :oops:

Vlt. ist dieses Vorgehen auch fĂĽr dich geeignet.

GruĂź Bastian
BastianB
 
Beiträge: 38
Registriert: 30. November 2022 12:19
Wohnort: Glauchau
Realer Name: Bastian Benicke
Arbeitsort: Neuenkirchen
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: ab 2013R2

Re: Ă„nderungsprotokollposten (Change Log Entry)

Beitragvon m_schneider » 9. Mai 2023 11:05

Dafür ist NAV einfach nicht gebaut. Das kann gar nicht schnell gehen. (Dafür hat es andere Qualitäten) Deswegen ja die SQL Datenbank. Glaube mir, mit dem Truncate sind die Daten schneller weg, als du Aufgabenwarteschlange sagst.
MfG Michael
Benutzeravatar
m_schneider
 
Beiträge: 2141
Registriert: 20. Januar 2009 14:36
Realer Name: Michael Schneider
Arbeitsort: Treuen
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2017

Re: Ă„nderungsprotokollposten (Change Log Entry)

Beitragvon Kowa » 9. Mai 2023 11:17

Bei einem Echtmandanten würde ich das eher auch über NAV mit Commit/Sleep häppchenweise erledigen, auch um das aktuelle Protokoll der letzten Wochen sicher zu erhalten. Im Testmandanten kann man das natürlich entspannter sehen und alles löschen.

Falls man über SQL nicht alles löschen möchte, muss man statt mit TRUNCATE mit DELETE arbeiten und einen Filter setzen z.B. für Cronus AG bis Posten 100000
USE [<Database Name>]
GO
delete from [dbo].[CRONUS AG$Change Log Entry] where [Entry No_] < 100000
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7835
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Re: Ă„nderungsprotokollposten (Change Log Entry)

Beitragvon fiddi » 9. Mai 2023 11:26

Hallo,

wenn du aber 15 Mio- Einträge hast, dauert das auch auf dem SQL-Server einige Zeit.

Wenn du das unter der Fahrt machen musst/willst, dann solltest du Bastians Lösung als SQL-Skript benutzen. Das funktioniert eigentlich ganz gut ohne die Anwender wirklich zu behindern.

GruĂź fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: Ă„nderungsprotokollposten (Change Log Entry)

Beitragvon riffaquarium » 9. Mai 2023 11:47

Danke fĂĽr Eure Antworten

Wie macht Ihr das beim Scharfen Mandanten ?
Ich habe bis jetzt immer Jährlich das Protokoll bis an ein Jahr zurück gekürzt.
Dies habe ich immer übers Nav gemacht mit Protokoll löschen mit der Datum Eingabe.
Und dort habe ich das immer so 2 Monate zusammen gelöscht damit das auch mal wieder fertig wird :-)

Das ist echt mühsam und eigentlich wäre es wirklich noch cool eine Automatische Löschung zu haben in der Aufgabenwarteschlagen mit einer Codeunit wo man immer die Zeile die älter als ein Jahr sind automatisch wegputzen könnte.

@BastianB
Dürfte ich mal einen Blick in deine Codeunit reinwerfen wie du das gemacht hast ? Würde das bei meinem Scharfen Mandant auch so lösen.

@Michael / Kowa
Wo im SQL Server fĂĽhre ich den befehlt aus:
TRUNCATE TABLE [Mandant$Change Log Entry]
oder
USE [<Database Name>]
GO
delete from [dbo].[CRONUS AG$Change Log Entry] where [Entry No_] < 100000

Wenn ich das auf dem SQL Server ausführe was denk ihr wieviel mal schneller werden die Datensätze gelöscht ?

Danke Euch allen
Cheers Dany
riffaquarium
 
Beiträge: 328
Registriert: 13. September 2010 23:43
Realer Name: Daniel
Arbeitsort: Schinznach Dorf
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV 2017

Re: Ă„nderungsprotokollposten (Change Log Entry)

Beitragvon fiddi » 9. Mai 2023 11:50

Hallo,

es wird auf dem SQL-Server um einiges schneller sein und weniger behindern, wenn man es richtig programmiert.

Aber wenn du das noch nie gemacht hast, wĂĽrde ich die Finger davon lassen das im SQL zu machen.

GruĂź fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: Ă„nderungsprotokollposten (Change Log Entry)

Beitragvon m_schneider » 9. Mai 2023 12:51

riffaquarium hat geschrieben:Wenn ich das auf dem SQL Server ausführe was denk ihr wieviel mal schneller werden die Datensätze gelöscht ?

Also entwender du installierst dir das SQL Management Studio und erstellst eine neue Abfrage. Oder du instalierst dir in VSCode die mssql Extension.

riffaquarium hat geschrieben:Wenn ich das auf dem SQL Server ausführe was denk ihr wieviel mal schneller werden die Datensätze gelöscht ?

Also mit truncate ist die Tabelle eigentlich fast sofort leer.
Beim delete dauert es auch entsrprechend des Filters und der Serverperformance. Keine Ahnung wie lang genau. Deutlich kĂĽrzer als ĂĽber den NAV-Server.

fiddi hat geschrieben:...Aber wenn du das noch nie gemacht hast, wĂĽrde ich die Finger davon lassen das im SQL zu machen...

DafĂĽr sind ja Test-Datenbanken da. ;-) Man sollte nur aufpassen, dass man die richtige Verbindung und Mandanten hat.
MfG Michael
Benutzeravatar
m_schneider
 
Beiträge: 2141
Registriert: 20. Januar 2009 14:36
Realer Name: Michael Schneider
Arbeitsort: Treuen
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2017

Re: Ă„nderungsprotokollposten (Change Log Entry)

Beitragvon Stefan82 » 11. Mai 2023 16:32

Ich stand vor demselben Problem fĂĽr unsere produktiven Mandanten.
Das Löschen vieler Datensätze (in meinem Fall auch diverse Mandanten mit jeweils mehreren hundert Millionen Zeilen) belastet den SQL-Server sehr und sorgt auch für ein rasantes Anwachsen des Transaktionsprotokolls, wenn zwischendurch kein commit erfolgen kann.

Daher lösche ich das Protokoll in Teilen zu jeweils 100.000 Zeilen. Das dauert nur wenige Sekunden, dann der nächste Teil usw.
Das Skript löscht in der Schleife bis alle zu löschenden Datensätze entfernt wurden. Das Transaktionsprotokoll bleibt klein und die Auslastung des SQL-Servers hält sich in Grenzen.

Beispiel für das Löschen aller Änderungsprotokollposten vor 2023.

Code: Alles auswählen
DELETE TOP(100000) from [<Mandant>$Change Log Entry]  WHERE YEAR([<Mandant>$Change Log Entry].[Date and Time]) < 2023
WHILE @@rowcount > 0
    BEGIN
    DELETE TOP(100000) from [<Mandant>$Change Log Entry] WHERE YEAR([<Mandant>$Change Log Entry].[Date and Time]) < 2023
    END
Stefan82
 
Beiträge: 5
Registriert: 8. Juli 2019 12:27
Arbeitsort: Papenburg / Leer
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC 14 / BC 20

Re: Ă„nderungsprotokollposten (Change Log Entry)

Beitragvon riffaquarium » 12. Mai 2023 16:17

Wowwww

Also bei mir mit 47 Milionen Sätze ging das 1ne Sekunde und weg waren die :-)

Code: Alles auswählen
TRUNCATE TABLE [Mandant$Change Log Entry]


Sehr nice :lol: :lol:
riffaquarium
 
Beiträge: 328
Registriert: 13. September 2010 23:43
Realer Name: Daniel
Arbeitsort: Schinznach Dorf
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV 2017

Re: Ă„nderungsprotokollposten (Change Log Entry)

Beitragvon fiddi » 12. Mai 2023 17:33

Hallo,

man will aber ja manchmal auch noch ein paar behalten, und dann dauert das auch. :mrgreen: :roll:

GruĂź Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: Ă„nderungsprotokollposten (Change Log Entry)

Beitragvon riffaquarium » 12. Mai 2023 17:48

Ja klaro

aber in meinen Test Mandanten und Test Datenbanken kicke ich die raus brauchen ja nur platz fĂĽr nix :-D
In der scharfen möchte ich immer 1 Jahr zurück behalten konnte so schmal Langfinger überführen hatte ich das nicht gehabt hätte ich das nicht beweisen können darum immer schön Loggen haha...

Jetzt bin ich aber trotzdem nicht ganz sicher ob ich für meinen scharfen Mandanten wo ich ein Jahr zurück behalten möchte ob ich die älteren mit einer Codeunit täglich weg gputzen sollte mit der Aufgabenwarteschlange es wären dann ja täglich auch nicht so viele Datensätze.


fiddi hat geschrieben:Hallo,

man will aber ja manchmal auch noch ein paar behalten, und dann dauert das auch. :mrgreen: :roll:

GruĂź Fiddi
riffaquarium
 
Beiträge: 328
Registriert: 13. September 2010 23:43
Realer Name: Daniel
Arbeitsort: Schinznach Dorf
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV 2017

Re: Ă„nderungsprotokollposten (Change Log Entry)

Beitragvon fiddi » 12. Mai 2023 18:07

Hallo,

wenn du das täglich machen willst, du ein Zeitfenster hast, das groß genug ist, dann kannst du das auch mit eine Codeunit machen. Das hast du besser im Blick, als ein Job der irgendwo auf einem SQL-Server läuft, nach dem keiner mehr schaut.

GruĂź Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell


ZurĂĽck zu NAV 2017

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron