verschiedene CU Stände -Powershell

3. Juni 2016 09:54

Hallo,

Ich bekomme bei der Nutzung der PowershellScripte folgenden Fehler:

The client version does not match the server version. You can only connect to a server with a matching version.

Client version: 9.0.42815.0

Server version: 9.0.44974.0

Die Server-Instanz hat die Version 9.0.44974, ich importiere dazu auch das richtige Powershellmodul.
Auf dem System sind verschiedene CU s installiert und auch verschiedene NAV-Versionen.
Wie kann ich nun aber die Funktionen aus der Powershell ausführen damit mir dieser Fehler nicht geworfen wird?
Ich sehe in manchen Skripten das auf Pfade zugegriffen wird die aus der Registry stammen, dort aber die CU Pfade nicht hinterlegt..
Welche Möglichkeiten habe ich hier um die Powershell Funktionen dennoch zu nutzen?


Danke im vorraus
Ben

Re: verschiedene CU Stände -Powershell

6. Juni 2016 00:03

Welche Skripte sind gemeint? Die auf der Install-DVD?
Welches Cmdlet löst den Fehler aus?

Mit Powershell hat das eigentlich nichts zu tun, die Fehlermeldung bekommt man beim manuellen Starten des Windowsclients ja genauso, wenn das Build nicht passt.

1. Möglichkeit: 42815 ist das RTM Build, 44974 ist CU 4. Da ist dazwischen keine Datenbankkonvertierung gab, kann der Client problemlos upgedatet werden. Das letzte technische Build vor dem nächsten Datenbankkonvertierungsschritt hat auch zahlreiche Plattformhotfixes im Vergleich zu den älteren dieser Datenbankversion, mit veralteten Plattformversionen tut man sich da ohnehin keinen Gefallen.

Falls die Client-Serverschnittstellen kompatibel sind, kann man ggf. mit dem Schalter "ClientBuildRestriction" am Server auch ältere Clients verbinden:
Introducing a build version check between NST and Windows and Web clients

[Nachtrag 19.03.19]
Hier ein Bild beim Start eines NAV 2018-Clients mit Buildabweichugen, der sich aber starten lässt.
ClientServerBuildAbweichungen.png

ClientServerBuildAbweichungenENU.png

Bei relativ geringen Abweichungen kann man sich mit den obigen Methoden meist noch behelfen, grundsätzlich muss man aber bei mehreren Versionen unterscheiden, ob die Entwicklungsumgebung oder der Windowsclient genutzt wird, der sich mit dem Serverdienst verbindet.

Die Entwicklungsumgebung (finsql.exe) kann erst dann die Datenbank nicht öffnen, wenn diese Änderungen an den Systemtabellen und damit eine höhere Konvertierungsstufe hat. Mit dem Öffnen ist es aber nicht immer getan, weil ein anderes Build als das ursprüngliche u.U. andere Ergebnisse beim Kompilieren bringt. Das können verschärfte Prüfungen in höheren Builds oder auch Änderungen bei den Dlls sein, die das Kompilieren verhindern wenn .Net-Methoden dazugekommen sind. Um wirklich sicher zu gehen, dass die Objekte korrekt kompiliert werden, müssen also Platform und Application Build übereinstimmen oder das Platform Build höher sein. Diese benötigten Versionen müssen also alle in separaten Pfaden vorliegen. In der Powershell ändert man dazu 90 in 90_6, 90_7 usw. damit die richtige finsql.exe aufgerufen wird.

Analog passiert das mit dem Windowsclient (Microsoft.Dynamics.Nav.Client.exe). Pro Server mit Datenbankkonvertierung einen neue (virtuelle) Serverumgebung aufbauen, und in den Skripten die Pfade wählen, die buildmäßig zueinander passen.

Wenn man die Skriptpfade über Parametertabellen versorgt (Codebeispiele dazu hier), kann das nach entsprechender langwieriger Vorbereitung alles per Mausklick gestartet werden.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.