[GELÖST] Powershell-Skript zum Kompilieren findet NST nicht

17. Oktober 2018 16:43

Hallo Zusammen,

stehe gerade vor dem Problem, dass mein lokales Powershell-Skript beim Versuch zu Kompilieren das passende Service-Tier anscheinend nicht finden/zuordnen kann. Seltsamerweise habe ich dieses Problem aktuell aber nur auf meinem lokalen Laptop, auf dem die entsprechende Datenbank und das entsprechende Service-Tier ja auch direkt installiert sind (und auch noch viele andere ...)

An folgender Stelle:
Code:
Compile-NAVApplicationObject -DatabaseName $DBName -DatabaseServer $DBServer -Filter "Type=$Type;Id=$Id" -NavServerInstance $NAVServerInstance -NavServerManagementPort $NavServerManagementPort


erhalte ich immer folgende Fehlermeldung:
Compile-NAVApplicationObject : : [0] The Server Instance specified in the Options window is not available for this database. You must choose an
instance to use before performing this activity. Do you want to do this now? -- Object: Table 50000 Test
[27590710] Die Änderungen an der Tabelle konnten nicht verarbeitet werden, weil die Microsoft Dynamics NAV-Entwicklungsumgebung keine Verbindung mit
der angegebenen Microsoft Dynamics NAV Server-Instanz herstellen kann.
Servername: [aus Diskretionsgründen gelöscht, sieht aber korrekt aus]
Serverinstanz: [aus Diskretionsgründen gelöscht, hier stand aber die falsche Serverinstanz, und zwar die erste gelistete Serverinstanz, wenn ich "Dynamics NAV 2018 Administration" aufrufe]
Verwaltungsport: [aus Diskretionsgründen gelöscht, hier stand aber der falsche Verwaltungsport, und zwar derjenige, der zur ersten gelisteten Serverinstanz gehört, wenn ich "Dynamics NAV 2018 Administration" aufrufe]
Die Microsoft Dynamics NAV-Entwicklungsumgebung erkennt einen ausgeführten Server automatisch.
Prüfen Sie Folgendes:
1. Der Microsoft Dynamics NAV Server muss ausgeführt werden
. Der Verwaltungsdienst muss konfiguriert sein
. Die Firewall muss bei Remotebetrieb für den Verwaltungsport offen sein
. Der Server wird nur mit einem Tenant ausgeführt
. Die Microsoft Dynamics NAV-Entwicklungsumgebung muss als Administrator ausgeführt werden oder
. Die Benutzerkontensteuerung muss deaktiviert sein. -- Object: Table 50003 Test 4 mit DEU ENU DES DEA
In C:\NAV-Toolbox\Powershell-Skripte\DEA_Captions_ergaenzen _TestRHe.ps1:82 Zeichen:5
+ Compile-NAVApplicationObject -DatabaseName $DBName -DatabaseServe ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Compile-NAVApplicationObject



Der Abbruch kommt also, obwohl ich über
Code:
-NavServerInstance $NAVServerInstance -NavServerManagementPort $NavServerManagementPort

die richtige Verbindung zum Service-Tier ja explizit mitgebe.
Dennoch ignoriert dies Powershell und versucht vergeblich, sich mit dem zuerst gelisteten ServiceTier zu verbinden, das unter "Dynamics NAV 2018 Administration" gelistet ist.

Der Rest des Powershell-Skripts funktioniert, und selbst das Kompilieren funktioniert anscheinend bei Codeunits, nicht jedoch bei Tabellen.

Hat hier irgendjemand Ideen, was man da machen kann ?

Vielen Dank für Eure Unterstützung !
Blue
Zuletzt geändert von BlueInTheSky am 18. Oktober 2018 13:48, insgesamt 1-mal geändert.

Re: Powershell-Skript zum Kompilieren findet Service-Tier ni

17. Oktober 2018 17:48

BlueInTheSky hat geschrieben:Der Rest des Powershell-Skripts funktioniert, und selbst das Kompilieren funktioniert anscheinend bei Codeunits, nicht jedoch bei Tabellen.


verstehe ich das richtig, dass wemm du das gleiche (und damit meine ich wirklich das gleiche) script aufrufst, dort aber anstelle von tables die codeunits kompilierst, funktioniert es?

Re: Powershell-Skript zum Kompilieren findet Service-Tier ni

17. Oktober 2018 17:50

Ja, genau.

Re: Powershell-Skript zum Kompilieren findet Service-Tier ni

17. Oktober 2018 18:05

Um Codeunits zu kompelieren benötigst du kein Zugriff auf die Datenbank, deswegen funktioniert das Ganze. (wenn ich mich nicht irre)

Hat der Nutzer mit dem du dies tust ausreichend Rechte auf der Datenbank?
Kannst du die Tabellen denn im DevClient kompelieren?
Was sagt das Eventlog dazu?

Re: Powershell-Skript zum Kompilieren findet Service-Tier ni

17. Oktober 2018 18:18

Ja, der User hat Admin-Rechte und hat z.B. auch keine Probleme die gleichen Objekte aus der DevEnvironment zu starten und zu kompilieren.
Das Eventlog schreibt beim Ausführen des Powershell-Skipts gar nichts in Windows-Protokolle/Anwendung. Es erscheinen einfach nur obige Fehlermeldungen in der Windows Powershell ISE.

Re: Powershell-Skript zum Kompilieren findet Service-Tier ni

18. Oktober 2018 10:37

gibt es mehr als eine NST die zu deiner DB eine Verbindung aufgebaut hat?

siehe
https://forum.mibuso.com/discussion/68540/powershell-import-compile-cant-connect-to-server-instance

Re: Powershell-Skript zum Kompilieren findet Service-Tier ni

18. Oktober 2018 10:46

Nein, die Datenbank ist nur mit einem ServiceTier verbunden (wurde ja auch extra für den Test angelegt)

Re: Powershell-Skript zum Kompilieren findet Service-Tier ni

18. Oktober 2018 12:14

Also ich bin inzwischen auf etwas gestossen:

Und zwar habe in meinem lokalen Powershell-Skript mal bei dem Compile-Befehl den Parameter
-SynchronizeSchemaChanges No
ergänzt, und siehe da, die obigen Fehler kamen nicht mehr.

Hier die komplette Zeile:
Code:
Compile-NAVApplicationObject -DatabaseName $DBName -DatabaseServer $DBServer -Filter "Type=$Type;Id=$Id" -NavServerInstance $NAVServerInstance -NavServerManagementPort $NavServerManagementPort -SynchronizeSchemaChanges No


Es scheint also tatsächlich mit der Schema-Synchronisation zusammenzuhängen.
Aber die SchemaSynchronisation ist ja eigentlich notwendig. Hmm.
Aber immerhin klappt es schonmal ohne SchemaSynchronisation.
Zuletzt geändert von BlueInTheSky am 18. Oktober 2018 14:25, insgesamt 1-mal geändert.

Re: Powershell-Skript zum Kompilieren findet Service-Tier ni

18. Oktober 2018 12:39

BlueInTheSky hat geschrieben:Aber die SchemaSynchronisation ist ja eigentlich notwendig.

Das stimmt, funktioniert denn ein nachgeschobenes Sync-NAVTenant mit dem Dienst? Das Resultat für die Datenbank wäre dann ja das gleiche, nur eben in getrennten Schritten.

Re: Powershell-Skript zum Kompilieren findet Service-Tier ni

18. Oktober 2018 13:45

-->
Ja, Kowa, das scheint funktioniert zu haben.
Folgende Zeile habe ich hinter die Compile-Zeile gesetzt

Code:
Sync-NAVTenant $NAVServerInstance -Force


Um Sync-NAVTenant benutzen zu können musste ich zu Beginn des Skripts dann noch die "Microsoft.Dynamics.Nav.Management.psd1" laden.
Bei mir sah dass dann so aus:

Code:
import-Module 'C:\Program Files\Microsoft Dynamics NAV\110\Service\Microsoft.Dynamics.Nav.Management.psd1' -Verbose -Force


Vielen Dank für Eurer Mitdenken Kowa, sweikelt und Ted !!!

Re: [GELÖST] Powershell-Skript zum Kompilieren findet NST ni

18. Oktober 2018 16:50

Noch ein Hinweis, da hier Verwechslungsgefahr bei den Parametern besteht:
Code:
Sync-NAVTenant $NAVServerInstance -Force

Force bedeutet hier nur "ohne Rückfrage ausführen".
Wenn man dagegen das Schema forciert durchdrücken will (also für Testsysteme, inkl. möglicher Datenverluste)
dann geht das so:
Code:
Sync-NAVTenant $NAVServerInstance -mode ForceSync -Force


https://docs.microsoft.com/en-us/powers ... -navtenant

Re: [GELÖST] Powershell-Skript zum Kompilieren findet NST ni

18. Oktober 2018 16:57

Danke für den wichtigen Hinweis, Kowa !