Tag Archives: Azure

Jet Reports 2013 Performance Boost

Der Jet Reports Datenzugriff für Dynamics-NAV 2013 über den Webservice ist etwas behäbig. Viele Berichte unserer Kunden liefen unter NAV 2009 über C/Front deutlich schneller als unter der neueren Dynamics-NAV 2013 Version per Webservice. Seit dem Update 1 von Jet Reports 2013 gibt es einen neuen Datenquellentyp:

Dynamics NAV 2013 und höher (SQL Server)

Dieser neue Typ ist beim Abrufen der Daten z.T. erheblich schneller als der Zugriff über den alten Datenquellentyp “Dynamics NAV 2013 und älter”. Wir haben schon Verbesserungen auf ein Fünfzigstel der vorherigen Laufzeit beobachtet. Der Zugriff über den neuen Typ ist häufig sogar erheblich schneller als der alte Zugriff über C/Front.

Warum ist der neue Datenquellentyp so viel schneller?

Der ältere Datenquellentyp für Dynamics-NAV 2013 verbindet sich ausschließlich über die Webservice-Schnittstelle. Für jeden Zugriff auf die Daten müssen viele Programm-Schritte durchgeführt werden:

  • Zugriff auf den Dynamics-NAV Web-Service.
  • Ausführen des Jet Reports C/AL Codes zum Abrufen der Daten.
  • Zugreifen auf den SQL Datenbank Server.

Jeder Schritt kostet Zeit und jeder Schritt wird für jeden Jet Reports Befehl des Berichtes ausgeführt. Der neue Datenquellentyp kommuniziert direkt mit dem SQL-Server. Anstatt das Abfragen der Daten von Dynamics-NAV per C/AL Code durchführen zu lassen, erstellt Jet Reports beim neuen Typ aus den Jet Reports Befehlen sofort SQL-Befehle. Diese Befehle werden direkt an den Microsoft SQL-Server gesendet. Der Datenbank Server kann diese Befehle enorm schnell bearbeiten. Besonders bei Gruppierungen ist der Datenbank Server sehr viel schneller als C/AL.

Ein Beispiel zur Veranschaulichung:

=NL(“Zeilen”;”Artikelposten”;”Bundesland”)

Dieser Befehl erstellt eine Liste der Bundesländer für die jemals eine Lagerbewegung stattgefunden hat. Es gibt im Navision keinen expliziten Schlüssel auf das Bundesland. Um die Bundesländer zu ermitteln wird Jet Reports jede Zeile der Artikelposten durchlaufen. Jeder neue Wert wird mit den bisher gefundenen Werten verglichen. Wenn es den neuen Wert noch nicht gab, dann wird die Ergebnismenge um diesen Wert erweitert. Für jede Zeile der Artikelposten werden einige C/AL-Befehle benutzt und eine SQL-Abfrage an den Datenbank Server gesendet. Das kann bei 5.000.000 Posten schon eine ganz erhebliche Weile dauern. Der neue Datenquellentyp braucht für die selbe Abfrage nur eine einzige SQL-Anweisung und der SQL-Server ist für diese Art von Anfragen auch noch hoch optimiert. Während der alte Datenquellentyp mehrere Minuten brauchen wird liefert der neue Datenquellentyp die Daten innerhalb von Sekunden.

Wo ist der Haken an der Sache?

Wenn man sein Dynamics-NAV 2013 komplett in der eigenen, technischen Umgebung installiert hat, dann gibt es keinen Haken. Für diesen Fall empfehlen wir wärmstens den neuen Datenquellentyp zu verwenden. Wer sich aber mit dem Cloud Dienst Microsoft Azure angefreundet hat, der kann den direkten SQL-Server Zugriff nicht verwenden. Man kann die Datenbank-Verbindungsdaten unter Azure nicht fest in der Jet Reports Datenquellenverwaltung hinterlegen, da sich die Verbindungsdaten zur Laufzeit ändern können. Wie ich Jet Reports so kennen wird es aber bald auch einen Windows Azure taglichen SQL-Server Client geben.

Die neuen Versionen darf jeder herunterladen und verwenden der die Jahreswartung für Jet Reports erworben hat.

Andreas Koblischke
www.datenkultur.de