NAV 2016 – Parallelität im Upgrade-Prozess
Zuständig für das Datenupgrade ist das PowerShell CmdLet »Start-NAVDataUpgrade«. Wie hier (Link zu http://www.comporsys.de/dynamics-nav-blog/was-wurde-aus-dem-powershell-cmdlet-invoke-companyinitialize/) beschrieben, startet dieses CmdLet auch automatisch die Codeunit 2 »Company-Initialize«.
Warum erzähle ich Ihnen das? Wenn Sie das Datenupgrade auf NAV 2016 für eine Datenbank mit mehreren Mandanten durchführen, kann es zu folgender unschöner Fehlermeldung kommen:
Invoke NAV Data Upgrade Failed
Errors occurred during the Microsoft Dynamics NAV data upgrade process:
Codeunit ID: 2, Function: OnRun, Error: Funktion 'OnRun' in der Codeunit zur Mandanteninitialisierung '2' ist im Kontext des Mandanten 'CRONUS USA, Inc.' aufgrund des folgenden Fehlers fehlgeschlagen: 'Der Vorgang konnte nicht abgeschlossen werden, da ein Datensatz in der Tabelle 'Add-in' durch einen anderen Benutzer gesperrt wurde. Führen Sie die Aktion erneut aus.', Company: CRONUS USA, Inc.
Was ist hier passiert? Das CmdLet »Start-NAVDataUpgrade« startet das Datenupgrade parallel in allen Mandanten. Demzufolge wird auch Codeunit 2 »Company-Initialize« parallel in allen Mandanten ausgeführt.
Die Tabelle »Add-In« ist mandantenübergreifend. Uns so versuchen nun mehrere Prozesse parallel in ein und dieselbe Tabelle zu schreiben. Was natürlich aufgrund der Sperren scheitert.
Eine einfache Möglichkeit dieses Problem zu umschiffen, ist der Parameter »FunctionExecutionMode« den Sie auf »Serial« setzen können. Dann arbeitet das CmdLet »Start-NAVDataUpgrade« die Mandanten nicht mehr parallel, sondern seriell nach einander ab.
Dazu müssen Sie das CmdLet »Invoke-NAVDataUpgrade« anpassen. Das liegt auf der Produkt DVD im Verzeichnis \WindowsPowerShellScripts\Upgrade\Cmdlets\NAV.
Eine andere Möglichkeit wäre, auf das »Company-Initialize« ganz zu verzichten. Das empfehle ich Ihnen allerdings nicht, da Ihnen dann unter Umständen wichtige Einstellungen fehlen. Dazu können Sie den Parameter »SkipCompanyInitialization« setzen. Erstaunlicherweise taucht dieser Parameter in der Dokumentation auf MSDN nicht auf: https://msdn.microsoft.com/en-us/library/dn789574(v=nav.90).aspx.
Viel Vergnügen bei Ihrem nächsten Upgrade-Projekt!

Like
Report
*This post is locked for comments