SQL-Report über die Tabelle ChangeLogEntry

27. Mai 2010 11:57

Hallo,

ich möchte eine Art Änderungsprotokoll per ReportingServices aus der Tabelle [MANDANT$Change Log Entry] erstellen.

Mir fehlt jedoch die Möglichkeit die jeweiligen Namen zu den Spalten [Table No_],[Field No_],[Type of Change] auszulesen.
Den Namen der Tabelle könnte man noch mit einem JOIN mit der Tabelle [Object] ermitteln, jedoch finde ich nichts für
den "Field Name"=Spaltenname und den Name für die Änderung.

Wo kann man diese Info auslesen / verknüpfen?

Vielen Dank!

Re: SQL-Report über die Tabelle ChangeLogEntry

27. Mai 2010 12:07

Es gibt die Tabelle Field, aus der du alle Feldnamen (bei entsprechender Filterung) auslesen kannst.

Re: SQL-Report über die Tabelle ChangeLogEntry

27. Mai 2010 13:15

Hallo,

danke für die schnelle Antwort.

Ich finde jedoch in unsere NAV 5SP1 auf SQL-Server2k8 keine solche Tabelle.
Auch in der Beispieldatenbank Cronos ist nichts zu finden.

Das ist etwas verwirrend ...

Re: SQL-Report über die Tabelle ChangeLogEntry

27. Mai 2010 13:41

Das ist eine von diese speziellen Systemtabellen!

Re: SQL-Report über die Tabelle ChangeLogEntry

27. Mai 2010 13:44

HattrickHorst hat geschrieben:Das ist eine von diese speziellen Systemtabellen!

Und wo siehst du die auf dem SQL-Server? Außer der Object-Tabelle ist da nichts ... Der Inhalt der Fields-Tabelle wird für den NAV-Client zur Laufzeit aufbereitet; es handelt sich hierbei um keine Tabelle.

Re: SQL-Report über die Tabelle ChangeLogEntry

27. Mai 2010 13:55

Ok, dann ist das aber eine virtuelle Tabelle. Ich dachte immer, daß wäre eine Systemtabelle, denn eigentlich muß da ja zur Laufzeit nichts neu berechnet werden. Eine Aktualisierung zwischendurch mal ist u.U. sinnvoll, aber die Strukturen der Tabellen inkl. Aufbau der Felder sollte doch immer bekannt sein. Anhand was wird denn dann der Datenbankaufbau gesichert?

Re: SQL-Report über die Tabelle ChangeLogEntry

27. Mai 2010 14:00

Unabhängig davon habe ich aber schon eine SQL-basierte Lösung gesehen, die die Feldnamen dynamisch ausgelesen hat. Es geht also irgendwie. Ich dachte immer, die hätte das aus der Tabelle Field ausgelesen. Naja, so kann man sich irren. :-o

Re: SQL-Report über die Tabelle ChangeLogEntry

27. Mai 2010 16:00

Als Nicht-NAV-Entwickler muss ich mal nachfragen:

Existiert diese "Tabelle" nur innerhalb der Laufzeitumgebung von Navision und ist per SQL nicht zu erreichen?

Gibt es trotzdem eine Möglichkeit darauf zuzugreifen oder diese Daten einmalig/regelmäßig zu exportieren?

mfg

Re: SQL-Report über die Tabelle ChangeLogEntry

27. Mai 2010 17:30

HattrickHorst hat geschrieben:Anhand was wird denn dann der Datenbankaufbau gesichert?

Ok, blöde Frage von mir. Die Objekte liegen natürlich in der Object-Tabelle im BLOB Field. Daraus wird dann irgendwann zur Laufzeit die Tabelle Field gefüllt. NAV ist schon manchmal komisch! :mrgreen:

Re: SQL-Report über die Tabelle ChangeLogEntry

27. Mai 2010 17:32

dot-org hat geschrieben:Als Nicht-NAV-Entwickler muss ich mal nachfragen:

Existiert diese "Tabelle" nur innerhalb der Laufzeitumgebung von Navision und ist per SQL nicht zu erreichen?

Gibt es trotzdem eine Möglichkeit darauf zuzugreifen oder diese Daten einmalig/regelmäßig zu exportieren?

mfg

Ja, genauso ist es. Virtuelle Tabellen werden zur Laufzeit generiert und sind nicht auf dem SQL vorhanden. Theoretisch kannst du die natürlich einmalig oder auch regelmäßig exportieren.

Re: SQL-Report über die Tabelle ChangeLogEntry

27. Mai 2010 20:37

HattrickHorst hat geschrieben:Ok, blöde Frage von mir. Die Objekte liegen natürlich in der Object-Tabelle im BLOB Field. Daraus wird dann irgendwann zur Laufzeit die Tabelle Field gefüllt. NAV ist schon manchmal komisch! :mrgreen:


Kann man die Objekte im BLOB Field parsen und sich so die Feldinformationen herausziehen?

Re: SQL-Report über die Tabelle ChangeLogEntry

28. Mai 2010 09:25

Nein, meines Wissens nach liegen die in kompilierter Form darin. Es gibt allerdings die Möglichkeit ab NAV 2009 über die Funktion EXPORTOBJECTS alle Objekte im Text- oder XML-Format zu exportieren. Diese Dateien könnte man dann wieder parsen.

Aber wie gesagt, es muß auch eine einfachere Variante geben. Ich kann mal dort nachfragen, wo ich das gesehen hab. Kann aber ein paar Tage dauern und ich weiß auch nicht, ob die das preisgeben. Aber vielleicht kann ja mal einer von den SQL-Experten hier dazu noch was sagen.

Re: SQL-Report über die Tabelle ChangeLogEntry

28. Mai 2010 10:05

Ein reine SQL-Lösung wäre optimal und könnte auch regelmässig wiederholt werden, ohne dass jemand die Field-List manuell exportieren muss.

Ich würde mich freuen, wenn Du noch etwas in Erfahrung bringen könntest bzw. jemand hier im Forum noch eine Idee hat!

Re: SQL-Report über die Tabelle ChangeLogEntry

16. Juli 2010 08:30

Sorry, es hat etwas gedauert das herauszufinden. Und jetzt gleich noch eine schlechte Nachricht: Die machen das anders, als ich dachte. Bisher habe ich vermutet, daß die dynamisch aufgebauten Tabellen der Lösung nur die Felder enthalten würden, die im Nachgang auch verwendet werden. Für den Fall bräuchte man ja in irgendeiner Form eine Felddefinition. Aber die lassen die komplette Tabelle als 1zu1-Kopie über SELECT INTO anlegen.
Code:
SELECT * INTO <NEUTAB> FROM <ALTTAB> WHERE 0=1

Da die Bedingung immer false ergibt, wird sozusagen nur eine exakte Kopie der Tabelle angelegt, ohne irgendwelche Daten zu kopieren. Hier lassen sich dann wieder nur die Daten hineinladen, die man braucht. Also, das hilft dir wahrscheinlich für deinen Fall nicht weiter. Tut mir leid.

Eigentlich müßten doch alle Änderungen auch ins Transaction Log einfließen. Kann man die Änderungen nicht daraus ermitteln?