[Gelöst] BC14 "Ungültiger Objektname" bei Install einer App

16. November 2022 15:32

Moin zusammen,

ich stehe gerade vor einem seltsamen Phänomen, welches ich mir nicht erklären kann.
Ich habe eine App, welche sich problemlos in der Development- sowie der Test-Datenbank publishen und installieren lässt.
In die Produktiv-Datenbank kann ich sie auch problemlos publishen, jedoch erhalte ich beim Versuch, diese zu installieren, folgende Fehlermeldung:
Microsoft Dynamics 365 Business Central hat geschrieben:Die Installation der Erweiterung <App-Name> auf Tenant default war aufgrund des folgenden Fehlers nicht möglich: Der folgende SQL-Fehler war nicht erwarte:
Ungültiger Objektname "<Datenbank-Name>.dbo.<Mandant>$Company Information$<App-ID>".

In der App gibt es unter anderem eine TableExtension, welche die Tabelle "Company Information" um ein paar Felder für "Geschäftsführer", "Registergericht", "Registernr.", ... ergänzt, also einfach nur Textfelder ohne Business-Logik.

Der Fehler tritt sowohl beim installieren per PowerShell, installieren per RTC-Page "Extension Management", als auch beim "Publish without debugging" per VS Code auf.

Alle ServiceTier-Instanzen sind mit "Multitenant=False" konfiguriert und auch sonst - bis auf Servicename, Datenbankname, Ports - identisch konfiguriert.

Nun meine Fragen an euch:
Was könnten mögliche Ursachen für dieses Phänomen sein und wie lassen sich die Ursachen beheben?

Re: [BC14] "Ungültiger Objektname" beim Installieren einer A

16. November 2022 16:29

1. Welches CU ist im Einsatz?
2. Ist die richtige Lizenz in der Zieldatenbank aktiv, also mit Freischaltung der neuen Objekte?
3. Haben die Mandanten dort andere Namen? Leerstellen bzw. Sonderzeichen darin können in manchen Versionen Ärger machen.

Re: [BC14] "Ungültiger Objektname" beim Installieren einer A

16. November 2022 16:59

Kowa hat geschrieben:1. Welches CU ist im Einsatz?
BC 14 CU 06 (Database: 14.6.36463 / Runtime: 14.6.36457)

Kowa hat geschrieben:2. Ist die richtige Lizenz in der Zieldatenbank aktiv, also mit Freischaltung der neuen Objekte?
Alle verwendeten neuen Objekte sowie die Objekte, zu denen Table- bzw. Page-Extensions erstellt wurden, sind in der Lizenz freigeschaltet.
Wären einzelne Objekte nicht lizenziert, dann würde BC uns bereits beim publishen eine aussagekräftige Fehlermeldung liefern.

Kowa hat geschrieben:3. Haben die Mandanten dort andere Namen? Leerstellen bzw. Sonderzeichen darin können in manchen Versionen Ärger machen.
Die Mandantennamen beginnen und enden alle mit einem Buchstaben und enthalten ausschließlich Großbuchstaben (ohne Umlaute o. ä.), Ziffern und dem Unterstrich.
Keine Umlaute, Sonderzeichen, Leerzeichen, ...
Gleiches gilt auch für die Datenbanknamen und ServiceTier-Instanznamen.
Objekt- und Feldnamen sind ausschließlich in englisch und maximal 30 Zeichen lang.

Die besagte Datenbank wird in dreifacher Version für Development, Test und Production vorgehalten.
Die dazugehörigen ServiceTiers sind identisch konfiguriert.
Publish und Install funktionieren auch weiterhin problemlos in der DEV und TEST, nur der Install in der LIVE scheitert mit der o. g. Fehlermeldung.

Ich habe die betroffene App auch schon aus der LIVE-DB unpublished und per Powershell versucht neu zu publishen und zu installieren, scheiterte aber weiterhin am Install.
Ebenso habe ich es nach einem weiteren Unpublish über VS Code probiert, ebenfalls erfolglos.
Nach einem weiteren Unpublish habe ich es per Powershell gepublished und dann versucht über den RTC - Extension Management zu installieren, ebenfalls erfolglos.

Sollten weitere Informationen von mir benötigt werden, bitte einfach fragen.
Wir sind für jeden Schuss ins Blaue dankbar.

Re: [BC14] "Ungültiger Objektname" beim Installieren einer A

16. November 2022 17:38

Alle 3 Datenbanken laufen mit der gleichen Lizenz?

Re: [BC14] "Ungültiger Objektname" beim Installieren einer A

16. November 2022 17:54

Testweise eine Runtime Package erstellen und es mal damit probieren.

Re: [BC14] "Ungültiger Objektname" beim Installieren einer A

16. November 2022 19:05

kurze Frage: Symbole für die Table erstellt? <<<- also in PROD!!!!

RTP müsste eigentlich auch durchgehen, aber sicher ist sicher

Re: [BC14] "Ungültiger Objektname" beim Installieren einer A

17. November 2022 09:58

Timo Lässer hat geschrieben:Keine Umlaute, Sonderzeichen, Leerzeichen, ...

Auch kein &?

Was steht denn im Protokoll, wie bei dem ähnlichen Fehler hier ab ExceptionStackTrace: https://github.com/microsoft/AL/issues/468 ?

Re: [BC14] "Ungültiger Objektname" beim Installieren einer A

17. November 2022 12:34

Kowa hat geschrieben:Auch kein &?

Wirklich nur Großbuchstaben A-Z, Ziffern 0-9 sowie der Unterstrich _

Kowa hat geschrieben:Was steht denn im Protokoll, wie bei dem ähnlichen Fehler hier ab ExceptionStackTrace

Die Protokolleinträge mit "ExceptionStackTrace" sind jetzt nicht sehr hilfreich, jedoch habe ich einen Eintrag gefunden, welcher zu der Fehlermeldung auch eine passende SQL-Anweisung darstellt.

Ich lasse mal Serverinstanzname, Datenbankname, Mandantenname und App-GUID unzensiert, damit wir uns diesbezüglich nicht im Kreis drehen.

Server instance: D365BC14_NL_FIN_LIVE_RTC_NAV
Tenant ID: default
Session type: Background
Session ID: 413
User: <Domäne>\<Benutzername>
Type: Microsoft.Dynamics.Nav.Types.Exceptions.NavSqlException
ErrorNumber: 208
TransactionRolledBack: False
SuppressMessage: False
ContainsPersonalOrRestrictedInformation: True
DiagnosticsSuppress: False
DiagnosticsMessage: Message not shown because the NavBaseException(string, Exception, bool) constructor was used.
MessageWithoutPrivateInformation: Message not shown because the NavBaseException(string, Exception, bool) constructor was used.
SuppressExceptionCreatedEvent: False
FatalityScope: None
Message:
Der folgende SQL-Fehler war nicht erwartet.
Ungültiger Objektname "D365BC14_NL_FIN_LIVE.dbo.M02_NL_FIN$Company Information$8cedb5bb-8772-42b4-a96a-1762f2bf0831".
SQL-Anweisung:
DELETE FROM "D365BC14_NL_FIN_LIVE".dbo."M02_NL_FIN$Company Information$8cedb5bb-8772-42b4-a96a-1762f2bf0831" WHERE NOT EXISTS (SELECT 1 FROM "D365BC14_NL_FIN_LIVE".dbo."M02_NL_FIN$Company Information" WHERE "D365BC14_NL_FIN_LIVE".dbo."M02_NL_FIN$Company Information$8cedb5bb-8772-42b4-a96a-1762f2bf0831"."Primary Key" = "D365BC14_NL_FIN_LIVE".dbo."M02_NL_FIN$Company Information"."Primary Key")

Re: [BC14] "Ungültiger Objektname" beim Installieren einer A

17. November 2022 14:18

Ist da eine ältere Version der App in der Datenbank bereits vorhanden? Falls ja, hier (Upgrading Extensions) alles beachtet? Ist Sync-NAVApp zwischen Publish und Install ausgeführt worden?

Re: [BC14] "Ungültiger Objektname" beim Installieren einer A

18. November 2022 08:54

Ja, die App war schon vorher in der Datenbank installiert.
Durch die letzten Anpassungen wurden nur Layout-Änderungen in den Reports vorgenommen.
Upgrade-Codeunits sind daher nicht notwendig.

Sync-NAVApp hatte ich zwischen Publish und Install ebenfalls ausgeführt, jedoch gab es nichts zu synchronisieren.

Wie gesagt: In den korrespondierenden Dev- und Test-Datenbanken lässt sich die App problemlos immer wieder installieren, nur in der Live-Datenbank nicht.

Auffällig ist, dass beim Install etwas aus der Company Information gelöscht werden möchte.
Ist das normal, wenn eine App (erneut) installiert wird?
Und warum löst das dann den "ungültigen Objektnamen" aus?

Re: [BC14] "Ungültiger Objektname" beim Installieren einer A

18. November 2022 13:24

Ist bei der alten App vielleicht eine andere ID, aber Name und Publisher sonst gleich geblieben? Ab BC 19 ist das kein Thema mehr (da ist nur noch die ID maßgeblich), aber bis BC 18 schon.
App Identity
"With Business Central 2021 release wave 2, name and publisher are no longer considered part of the app identity and can therefore be changed to reflect branding or acquisition, for example."

Re: [BC14] "Ungültiger Objektname" beim Installieren einer A

22. November 2022 08:34

App-ID, Name, Publisher und sogar die Versionsnr. sind exakt gleich geblieben.

Wir konnten feststellen, dass nach dem Publish und dem Sync keine Companion-Table auf dem SQL-Server vorhanden war, somit konnte der DELETE-Befehl beim Install diese auch nicht finden.

Das Problem konnte gelöst werden, indem wir eine maginale Änderung an der Extension vorgenommen, das Package neu erstellt und neu gepublished hatten.
Anschließend haben wir die maginale Änderung wieder rückgängig gemacht, das Package nochmals erstellt und (nach der Deinstallation und Unpublish) neu gepublished, synchronisiert und konnten es dann ebenfalls erfolgreich installieren.

Warum die Synchronisation vorher die Unterschiede nicht festgestellt hat, nach der Änderung (an einem Report und nicht der betroffenen Tabelle) es aber funktionierte, können wir uns immer noch nicht erklären.