Identifizieren von Tabellensperren in Dynamics NAV / Business Central

Identifizieren von Tabellensperren in Dynamics NAV


Das Identifizieren von Tabellensperren in Dynamics NAV hat sich seit Dynamics NAV 2013 gegenüber dem Navision Classic Client komplett geändert. Die Art und Weise, wie die Dynamics NAV Benutzer sich mit der SQL-Datenbank verbinden wurde durch den RTC Client neu strukturiert. Benutzer stellen eine Verbindung zu dem NAV-Service-Tier aus dem Windows-Client, Web-Client, Sharepoint-Client oder Web-Services her. Die neue sogenannte „Dreischicht-Architektur“ trennt Datenbank-, Server- und Client-Ebene voneinander.
Das Benutzerkonto, mit dem das NAV-Service-Tier ausgeführt wird, ist das Einzige, dass tatsächlich eine Verbindung zur SQL-Datenbank herstellt. Es gibt viele gute Gründe dafür:

  • Der Dynamics NAV Server verwendet eine ADO.NET-Schnittstelle, die eine Datenzugriffsschicht ist, die das SQL Server Connection-Pooling unterstützt. Dies vereinfacht die Bereitstellung der Microsoft Dynamics NAV-Drei-Schichten-Architektur für Einsätze, wo die drei Ebenen auf unterschiedlichen Computern installiert sind. Es wird das Windows Communication Framework (WCF) als Kommunikationsprotokoll verwendet.
  • Es verbessert die Sicherheit, da in der SQL Datenbank kein SQL Benutzer mit Anmeldename für jeden der benötigten NAV Anwender erstellt werden muss. Das Ergebnis, die Sicherheit ist einfacher, da somit keine Notwendigkeit für ein verbessertes Sicherheitsmodell zu früheren Versionen benötigt wird (Client-Server-Verbindung).

Tolle Dinge! Ein Nebeneffekt ist jedoch, dass es schwierig ist zu sehen, welche SQL Server Verbindung (SPID) einer NAV-Sitzung zu geordnet ist. Das ist ein Problem, wenn man versucht, einen Windowsbenutzer zu einer Tabellensperrung / Blockierungsproblem zu ermitteln.
In den Tagen des klassischen Clients, wo man die aktiven Datenbanksitzungen sehen konnte und Sperrinformation zusammen mit der Möglichkeit Sitzungen gegebenenfalls zu beenden, sind durch die neue Architektur leider Geschichte.

Da uns immer wieder Kunden auf das Problem des Identifizieren von Tabellensperren in Dynamics NAV ansprechen und ob wir nicht ein Tool oder eine Lösung für dieses Problem hätten, haben wir eine Lösung entwickelt. Unser erster Lösungsansatz war unser V8 NAV SQL Studio. Allerdings war die Architektur der Software bei der Installation von Dynamics NAV Service Tiere auf unterschiedlichen Computern, suboptimal.

Überwachen von Microsoft Dynamics NAV Server-Ereignissen:

Zum Bessern Verständnis möchten wir kurz einmal den Unterschied zwischen Locking, Blocking und Deadlocking für alle nicht SQL Server Spezialisten erklären. Locking (Sperren): Sperren sind ein Mechanismus, der von Microsoft   SQL Server zum Synchronisieren des gleichzeitigen Zugriffs auf die gleichen Daten durch mehrere Benutzer verwendet wird.
Bevor eine Transaktion eine Abhängigkeit für den aktuellen Status von Daten abruft, z.B. durch Lesen oder Ändern der Daten, muss sie sich selbst vor den Auswirkungen schützen, die sich ergeben können, wenn eine andere Transaktion die gleichen Daten ändert.

Blocking:

Ein BLOCKING tritt auf, wenn zwei Verbindungen gleichzeitig Zugriff auf das gleiche Datenelement benötigen und eine Verbindung blockiert wird, weil zu einem bestimmten Zeitpunkt nur eine Verbindung Zugriff haben kann.

In NAV erscheint dann diese Meldung:

Microsoft Dynamics NAV
—————————

Der Vorgang konnte nicht abgeschlossen werden, da ein Datensatz in der Tabelle ‚…‘ durch einen anderen Benutzer gesperrt wurde. Führen Sie die Aktion erneut aus.
—————————
OK
—————————

Deadlocks:

DEADLOCKS treten auf, wenn sich zwei Tasks dauerhaft gegenseitig blockieren, weil jeder der Tasks eine Sperre für eine Ressource aufrecht erhält, die von dem anderen Task benötigt wird.

Folglich kann Transaktion A nicht abgeschlossen werden, bis die Transaktion B abgeschlossen ist. Die Transaktion B ist aber durch Transaktion A blockiert.

In NAV erscheint dann diese Meldung:

Microsoft Dynamics NAV
—————————

Der Vorgang konnte nicht abgeschlossen werden, da ein Datensatz in der Tabelle ‚…‘ durch einen anderen Benutzer gesperrt wurde. Führen Sie die Aktion erneut aus.
—————————
OK
—————————

Das Sperren (Locking) ist ein integraler Bestandteil vom Microsoft SQL Server, um Parallelität und die physische Integrität jeder Transaktion sicherzustellen.
Blockierung ist schlecht, wenn eine Verbindung / Transaktion für eine lange Zeit unnötig wartet, und Deadlocking ist ein Phänomen, das niemals auftreten sollte.

V8 Search XE – Deadlocks und Blockings im Dynamics NAV Server erkennen und beheben.

Die Ereignisverfolgung im V8 Search XE liefert detaillierte Informationen über das, was auf dem Microsoft Dynamics NAV Server auftritt, wenn Benutzer mit Microsoft Dynamics NAV arbeiten und dabei Blocking oder Deadslocks entstehen. Alle Daten zu bestimmten Dynamics NAV Trace-Ereignissen werden in einer V8 SQL Server Datenbank erfasst. Dies kann Ihnen helfen, Probleme oder Zustände, die die Leistung von Dynamics NAV / SQL Server beeinträchtigen, zu identifizieren und zu analysieren.

Identifizieren von Tabellensperren in Dynamics NAV. Mit der V8 Search XE Ereignisverfolgung können Sie Microsoft Dynamics NAV Server dynamisch überwachen, ohne dass der Server oder die Microsoft Dynamics NAV-Clients neu gestartet werden müssen.

Sie können den V8 Search XE verwenden, um zum Beispiel folgenden Vorgänge auf Microsoft Dynamics NAV Server-Instanzen und dem SQL Server zu verfolgen:

  • Ausführung von SQL-Anweisungen von Microsoft Dynamics NAV Server.
  • Ausführung von NAV C/AL-Funktionen.
  • Ausführen von Microsoft Dynamics NAV-Berichten, Abfragen und XMLports.
  • Prozessnummer, Status, Sperren und Befehle (TSQL und C/AL bzw. AL), die die aktiven Benutzer ausführen.
  • Gesperrte Objekte sowie die Art der eingerichteten Sperren.
  • Vollständige Dynamics NAV SQL-Ablaufverfolgung eines sperrenden Prozess (SPID | DYNAMICS NAV USER)
  • Vollständige Dynamics NAV SQL-Ablaufverfolgung von aktiven Benutzen nach Gesamtwartezeit (SPID | WAITTIME)

Welcher Dynamics BC / NAV Windows User sperrt die Tabelle?

V8 Search XE Tutorial Video



Read more…

Gerne beantworten wir Ihnen persönlich weitergehende Fragen zu diesem Thema. Kontaktieren Sie uns einfach über unser Kontaktformular oder per E-Mail an info@dynamicsproject.com!

Ihr Team von DynamicsProject.com

Back to Top

Fehlerbehebung bei Performance-Problemen


Die Fehlerbehebung bei Performance-Problemen mit Dynamics Business Central oder NAV mit SQL Servern ist schwierig.
Wir das Team von dynamicsproject.com machen uns ständig gedanken, wie wir V8 Search XE im Kampf gegen Performance-Probleme in Dynamics Business Central oder NAV verbessern können.

Extended Events (XE) ist ein großartiges Diagnosetool, das in SQL Server 2008 eingeführt wurde. Wir benutzen die Extended Events (XE) als Hauptbasis für die Datenanlyse in V8 Search XE. Der V8 XE Profiler ermöglicht es, per erweiterte Ereignisablaufverfolgungen auf allen Dynamics NAV Instanzen das „Full SQL Tracing“ parallell ausführen, um Tabellensperren die auf jeder Instanzen auftreten kann „Live“ zu erfassen.
Nach dem Einschalten der Ablaufverfolgung können in kürzster Zeit große Mengen mit den erweiterten Ereignisverfolgungsdaten erzeugt werden. V8 Search XE liest die XEL Dateien, die vom asynchronen Dateiziel für erweiterte Ereignisse erstellt wurden. Pro Zeile wird ein Ereignis im XML-Format zurückgegeben. Das Lesen großer Ergebnismengen kann unter umständen sehr lange dauern. Standard mäßig erstellt das V8_FullSQL_NAV_Trace Ereignis 5 Dateien a 1 GB. Bei 5 GB XEL-Daten (ca. 1 Milionen Datensätze im XML Format) konnte das Einlesen in die Datenbank Tabellen zu Analysezwecken, durch aus 45 Minuten und länger dauern.

Das ist eine lange Wartezeit, also haben wir und darüber nachgedacht, wie wir das Importieren schneller machen können.

Der neue V8 XE Loader.

Mit diesem Dienstprogramm von V8 Search XE (ab Version 2.4.5) können die Inhalte der V8_FullSQL_NAV_Trace*.xel erweiterter Ereignisdateien schnell in eine SQL-Server-Datenbank geladen. Die Grundidee hierbei ist, das Dienstprogramm mit einer Reihe von XEL-Dateien aus derselben Extended Event-Sitzung zu versorgen. Das Dienstprogramm liest die Ereignisse parallel in mehreren Threads. Diese Methode reduzierte die Zeit, die für die Verarbeitung einer einzelnen Datei benötigt wird um ein Zehnfaches. In unserem Test konnten wir die 5 GB XML Dateien in knapp 5 Minuten und hatten somit relativ schneller die komplette Transaktion inkl. C/AL Codes der Dynamics NAV/BC Sitzung, die für die Tabellensprerre auf dem SQL-Server verantwortlich wahr.


Diesen Art von C/AL Code sollten sie sehen, um eine Fehlerbehebung bei Performance-Problemen in Dynamics Business Central oder NAV durchführen zu können!


V8 XE Profiler Result
V8 XE Profiler Result


Gerne beantworten wir Ihnen persönlich weitergehende Fragen zu diesem Thema.
Ihr dynamicsproject.com Team

Warum ist Dynamics NAV langsam Teil 2

Warum ist Dynamics NAV langsam Teil 2



Warum ist Dynamics NAV langsam Teil 2 – wir möchten noch einmal das Thema für Sie zur Sprache bringen. Die neue Sicht der Dinge.

Stellen Sie sich vor, einen erfahrenen Dynamics NAV Partner für das Thema Funktionalitäten und Anpassungen in Dynamics NAV zu haben, der weiß, dass er sich Ihr Vertrauen täglich erarbeiten muss. Einen Partner, der Ihre Bedürfnisse versteht, die passenden Lösungen plant, baut und implementiert.

Nach einiger Zeit läuft NAV oft sehr träge, und das ausgerechnet in zeitkritischen Situationen? Sie haben eine Menge investiert , um Ihr ERP System aufzubauen. Zeit, Geld und Ressourcen wurden eingesetzt, aber sobald Sie Artikelkarte in NAV aufrufen… sind Sie bereits genervt!
Warum – weil Sie eine gefühlte Ewigkeit warteten, bis die Daten sichtbar sind. Oder wichtige Informationen zu Bestellungen aus dem angebundenen Web Shop werden nicht zügig abgearbeitet… kommt Ihnen das bekannt vor?
Seit dem das NAV System „live“ ist, funktioniert die Betreuung des ERP Systems durch den Partner vor Ort nur sehr …

Und was machen die meisten Dynamics NAV Verantwortlichen im Unternehmen?

Wenig bis Nichts. Sie sprechen mit dem NAV Partner. Der bekommt die Probleme aber auch nicht richtig in den Griff. Und jetzt? Auf die Suche nach einem neuen Dynamics NAV Partner machen? Nach dem „1-Klick-Programm“ für NAV Probleme im Netz suchen?

Es gibt keine „One click alles wird gut Lösung“ für NAV Probleme!!!



NAV Performance Optimierungs Tools gibt es leider nicht so viele auf dem Software Markt. Warum eigentlich? Ganz einfach – es ist ein undankbarer Job so etwas zu entwickeln. Trotzdem entwickeln wir mit unserer Kreativität und Leidenschaft für Sie neue Produkte.

Zum Beispiel unser neustes Tool V8 Search XE – Dynamics NAV und SQL Server Performance Anaylzer. Warum wieder so eine neue Mammutaufgabe?

„Weil wir es lieben… und ein bisschen irre sind!“

Seit dem Jahr 2012, mit Einführung Dynamics NAV 2013, haben wir voller Elan und Enthusiasmus eine Vision gehabt – Tools für Dynamics NAV und dem SQL Server zu entwickeln, die das Leben leichter machen sollen. Wir planten eine ganze Produktlinie Namens „Vision 8“ . Die acht im Namen ist eigentlich gar keine „8“ sonder ein Unendlichkeitszeichen „∞“ (ließ sich beim schreiben schlecht darstellen).


Warum ist Dynamics NAV langsam Teil 2


Unternehmen sollen bei der Produktentwicklung die Bedürfnisse des Nutzers in den Mittelpunkt stellen. Im Idealfall empfindet der Nutzer das Produkt dadurch als nützlich und einfach zu bedienen.

Einfach machen: Das sagt sich so leicht. In Wirklichkeit ist Einfachheit oft die schwierigere Aufgabe.

Die Herausforderung liegt in der Funktionsvielfalt eines „NAV Performance Analyzer“

Dass die nutzerzentrierte Produktentwicklung gerade in den letzten Jahren in den Unternehmen immer wichtiger wird, liegt an der steigenden Komplexität der Produkte wie Dynamics NAV und dem SQL Server im Arbeitsalltag der Benutzer.

Je komplexer die IT-Infrastruktur, desto schwieriger ist es, diese hochperformant und sicher zu halten. Lässt sich Hochverfügbarkeit für die kritische Unternehmenssoftware wie Dynamics NAV überhaupt noch garantieren? Und welche Möglichkeiten gibt es, das komplexe Thema Performance Analyse zu vereinfachen?

Es gibt eine Vielzahl von Tools für die Leistungsüberwachung und -optimierung von SQL Servern. Kostenlose Monitoring-Tools mit Tipps, Tricks und Know-How bei Performance Problemen – alternativen zu teuren, großen und aufwändigen IT-Infrastruktur Monster Tools.

Egal ob kostenlos oder teuer; helfen Ihnen diese Tools bei Tabellensperren oder NAV Clients die nicht reagieren?

NEIN!

Was genau ist das V8 Search XE Tool und was macht es so besonders? Was unterscheidet V8 Search XE von anderen ähnlichen Diagnosetools – die es eigentlich nicht gibt; oder haben Sie eins im Internet gefunden?

Warum ist Dynamics NAV langsam Teil 2 – Fazit

Egal welchen Weg Sie wählen, sollten Sie am Ende Ihr Dynamics NAV System fit für die Zukunft machen…
Also warum nicht mit V8 Search XE

Gerne beantworten wir Ihnen persönlich weitergehende Fragen zu diesem Thema.

Siehe auch

https://www.dynamicsproject.com/allgemein/sql-server-performance-fuer-dynamics-business-central.html

Support-Anrufe – Tabelle gesperrt?

Support-Anrufe: Welcher Microsoft Dynamics NAV Benutzer hat eine Tabelle gesperrt?

 

Viele von Ihnen kennen die Support-Anrufe von verzweifelten Kunden oder Kollegen, die etwa so klingen: „Hilfe! Niemand kann etwas Buchen!“
„Alles, was wir bekommen, ist eine Nachricht, dass die Tabelle Artikelposten von einem anderen Benutzer gesperrt ist!“

„Find the NAV Session ID that holds the blocking lock“ – gerne, aber wie?

Bis NAV 2009R2 war die Sitzungs-ID in der NAV-Sessions-Liste dasselbe wie die SQL Server SPID. Beginnend mit Microsoft Dynamics NAV 2013, entspricht die Sitzungs-ID nicht mehr den SQL SPID.

Der SQL Server erkennt, dass eine Blockierung durch das NAV Service Tier entsteht mit der SPID XXX und als User wird der Netzwerkdienst angezeigt. AAAAAAHHH!!!“
Und welcher NAV Benutzer verursacht das Problem? Wen soll man anrufen, den Netzwerkdienst??

Dem Anschein nach ist der „Leidensdruck“ noch nicht hoch genug, dass sich Dynamics NAV Benutzer/Kunden von Dynamics NAV 2013 oder höher bei Ihren Microsoft Dynamics-Partner über diesen unbefriedigende bzw. nicht vorhandene Problemlösung beschweren.

Immer wieder Fragen mich meine Kollegen, Kunden und sogar Microsoft Dynamics-Partner nach einer Lösung.

Unsere erste Lösung der V8 Search XE – leider nicht ganz optimal für NAV Service Tiere auf verschieden Computern.

Basierend auf unserer ersten Idee, haben wir aus einer Windows-Applikation einen Windows-Service entwickelt. Damit ist das Problem der NAV Service Tiere auf verschiedenen Maschinen gelöst (guter Tipp von einem NAV Entwickler Kollegen).
Alle Informationen lassen in einer SQL Server Datenbank zusammenfassen. Somit kann die NAV Session ID, User Name und SQL SPID in einer SQL Sicht anzeigt werden. Damit stehen alle Analyse Möglichkeiten des SQL Server in Bezug auf Deadlocks, Blocking Process und vieles mehr für jeden Dynamics NAV Benutzer zur Verfügung.

Die Performance Optimierung in Dynamics NAV kann beginnen, da man jeden NAV Benutzer gezielt ansprechen kann, was er gerade in Dynamics NAV macht und warum die anderen Benutzer gesperrt werden!


Let’s have big fun!


Kleiner Hinweis:
Die Dynamics NAV Benutzer können in den seltensten Fällen etwas für das Sperren der Tabellen. In 95% der Fälle ist der Dynamics NAV C/AL Source Code die Ursache – nicht der NAV Benutzer!


Sie sind noch kein Kunde? Wir unterstützen Sie.
Mit dem richtigen Dynamics Project Plan können Sie Ihre Lösung optimal einsetzen und dafür sorgen, dass Ihr System nicht nur gut funktioniert, sondern stets die bestmögliche Performance bietet.

Ihr Nutzen: weniger Support-Anrufe!

 


Unser Workshop-Angebot – V8 Performance Management Pack


  • 1 Tag Vor-Ort- oder Analyse per Remote-Meetimg / Software installation durch/mit einen Mitarbeiter unseres Dynamics Project Teams
  • Installation, Konfiguration und Verwaltung von V8 Search XE
  • Konzept zur weiteren Vorgehensweise mit Detail-Anweisungen zur Dynamics NAV und SQL Server Optimierung


 

Features | SQL Server | Dynamics NAV


  • Echtzeit-System SQL-und Performance-Daten
  • Datenbank- und Protokolldateigröße
  • Sperren und Latches | Pufferverwaltungsstatistiken
  • Arbeitsspeicher | Festplattenleistung
  • Identifizierung von aufwändigen SQL Abfragen anhand von CPU-Zeit und durchschnittlicher Dauer
  • Aktive Benutzerverbindungen
  • Datenprotokollierung als CSV Datei – Datenerfassungsintervall konfigurierbar
  • Nutzung des neuen Features von Microsoft Dynamics NAV 2013 / 2015 / 2016 zur Analyse der C/AL-Aufrufliste für SQL-Befehle
  • Ermittlung welche SQL-Anweisungen aus der selektierten Session des NAV-Client generiert wurden
  • Analyse kostspieligster C/AL Aufrufe in Bezug auf die SQL Performance
  • Sichtbarkeit der Metadaten aller Objekte aus der NAV 2013 / 2015 / 2016 Objekt-Metadatentabelle
  • C/AL Source Code Compare and Merge Tool
  • C/AL Compare Html Documentation
  • Dynamics NAV Object Store incl. Function “Where Used?””
  • XE Explorer für SQL Server Extended Events
  • SQL Live Monitor
  • Html SQL Server Dokumenter
  • Vergleichen von Datenbankschemas
  • Transact-SQL-Editor
  • PowerShell Editor
  • SQL System Health Reports


Gerne beantworten wir Ihnen persönlich weitergehende Fragen zu diesem Thema. Kontaktieren Sie uns einfach über unser Kontaktformular oder per E-Mail an info@dynamicsproject.com!

 

Ihr Team von DynamicsProject.com