AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.03.2017, 13:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,617 / 848 (80) +++++++
Регистрация: 28.10.2006
german_nav_developer: Upgrade Tips & Tricks Teil 3
Источник: https://blogs.msdn.microsoft.com/ger...tricks-teil-3/
==============

Heute gibt es den ersten deutschsprachigen Blogartikel zum Thema Microsoft Dynamics NAV Upgrade Tipps & Tricks.

Die vorherigen beiden Blogartikel zum Thema Upgrade Tipps & Tricks 1 und 2 finden Sie in Englisch auf dem NAV Team Blog.

Best Practices Tips and Tricks for Upgrading to Dynamics NAV 2013 R2 or Dynamics NAV 2015

Best Practices Tips and Tricks for Upgrading to Dynamics NAV 2013 R2 or Dynamics NAV 2015 Part 2

Der dritte Teil beschreibt eine Problematik in NAV 2017, häufiger aufzutreten scheint.

‚UPG Item ist nicht vorhanden‘:

SessionId    : xx
CodeunitId   : 104xxx (abhängig von Version)
FunctionName : UpdateItem
CompanyName  : CRONUSxxxx
StartTime    : xxxxx
Duration     :
State        : FailedPendingResume
Error        : The UPG Item does not exist. Identification fields and values: No.=’xxx’


Für Entwickler, die sich mit Upgrade Szenarien beschäftigen, kennen diese Fehlermeldung sicherlich und haben diese schon beheben müssen. Dennoch bleibt die Frage des Warum:
  • Was bedeutet der Fehler?
  • Was kann ich diesen lösen?
Was ist ‚UPG ITem‘ überhaupt?

Alle Tabellen die mit dem Namen UPG* anfangen, sind Hilfstabellen, die in der Upgrade Tool Kit zu finden sind. Sie helfen der Upgrade Logik und den Upgrade Codeunit als temporäre Speicher für das Upgrade von Daten und Strukturen.

UPG Tabellen sind ein Teil der Upgrade FOBs. UPG Tabellen sind Lokalisierungsabhängig.

Was bedeutet ‚UPG Item ist nicht vorhanden?

Wenn man die Upgrade Tool Kit Objekte importiert, werden alle UPG Tabellen automatisch erstellt. Z.B. die Objekte in ‚Upgrade900100.DE.fob‘:





Das bedeutet, auf dem SQL Server ist die Tabelle nun vorhanden:



Was bedeutet nun der Fehler?

Der Fehler erscheint, wenn wir die Schema Sync. ausführen, nachdem wir das Upgrade Toolkit importiert haben. Der Fehler sagt die Tabelle UPG Item ist nicht vorhanden, aber wir können mit Sicherheit sagen, dass die Tabelle vorhanden ist, da wir diese auf dem SQL Server sehen können.

Der Fehler bedeutet, dass die Tabelle physikalisch vorhanden ist, aber keine Datensätze enthält.



Warum sind Daten in der Tabelle wichtig und wieso könnten diese Tabelle geleert worden sein?

Die Daten von T104092 sind für die Upgrade Prozeduren wichtig, die Erklärung finden wir in CU 104075 als Beispiel.

Cu 104075:

[TableSyncSetup] GetTableSyncSetupW1(VAR TableSynchSetup : Record “Table Synch. Setup”)

// The purpose of this method is to define how old and new tables will be available for dataupgrade
// The method is called at a point in time where schema changes have not yet been synchronized to
// the database so tables except virtual tables cannot be accessed

// TableSynchSetup.”Table ID”:
// Id of the table with schema changes (i.e the modified table).

// TableSynchSetup.”Upgrade Table ID”:
// Id of table where old data will be available in case the selected TableSynchSetup.Mode option is one of Copy or Move , otherwise 0

// TableSynchSetup.Mode:
// An option indicating how the data will be handled during synchronization
// Check: Synchronize without saving data in the upgrade table, fails if there is data in the modified field/table
// Copy: Synchronize with saving data in the upgrade table, the modified table contains data in matching fields
// Move: Synchronize with moving the data in the upgrade table,the changed table is empty; the upgrade logic is handled only by application code
// Force: Synchronize without saving data in the upgrade table, disregard if there is data in the modified field/table

// Examples:
// DataUpgradeMgt.SetTableSyncSetup(DATABASE::”Sales Header”,DATABASE::”UPG Sales Header”,TableSynchSetup.Mode::Copy);
…………
DataUpgradeMgt.SetTableSyncSetup(DATABASE::Item,DATABASE::Table104092,TableSynchSetup.Mode::Copy);
…………


Das bedeutet, für die Schema Sync. spielt es eine Rolle, ob die Tabelle voll oder leer bleibt.

Warum genau ist das so?

Wenn wir die Upgrade Schritte von diesem KB folgen: https://msdn.microsoft.com/en-us/dyn...ading-the-data

Step 10:

##

Task 10: Run the schema synchronization to synchronize the new tables

Similar to task 8, to publish the data schema changes of the newly imported tables to the SQL tables, run the Sync. Schema For All Tables – With Validation option from the development environment or run the Sync-NavTenant cmdlet from the Microsoft Dynamics NAV 2017 Administration Shell.

##

Es ist klar beschrieben, dass die Schema Sync. mit Validierung ausgeführt werden sollte. Oft ist das aber die Ursache des Fehlers.

Im nächsten Schritt führt man ein Sync.– mode Checkonly aus, um herauszufinden, was genaue im Hintergrund passiert.

…..Voila!

PS C:\Windows\system32> Sync-NAVTenant DynamicsNav100 -Mode CheckOnly

Sync-NAVTenant : The schema synchronization may result in deleted data. The following destructive changes were detected:

Table: 18, Customer Field: 5001900, No. Entries for Avis: Deleted Field: 5055250, Liq. Payment Terms Code: Deleted Field: 5157970, Electronic Document Dispatch: Deleted Table: 23, Vendor Field: 5001900, No. Entries for Avis: Deleted Field: 5001901, Direction Code: Deleted Field: 5001902, Payment Type: Deleted Field: 5055250, Liq. Payment Terms Code: Deleted Field: 5157970, Electronic Document Dispatch: Deleted Table: 38, Purchase Header Field: 99008500, Date Received: Deleted Field: 99008501, Time Received: Deleted Field: 99008504, BizTalk Purchase Quote: Deleted Field: 99008505, BizTalk Purch. Order Cnfmn.: Deleted Field: 99008506, BizTalk Purchase Invoice: Deleted Field: 99008507, BizTalk Purchase Receipt: Deleted Field: 99008508, BizTalk Purchase Credit Memo: Deleted Field: 99008509, Date Sent: Deleted Field: 99008510, Time Sent: Deleted Field: 99008511, BizTalk Request for Purch. Qte: Deleted Field: 99008512, BizTalk Purchase Order: Deleted Field: 99008520, Vendor Quote No.: Deleted Field: 99008521, BizTalk Document Sent: Deleted Table: 79, Company Information Field: 50000, Ort für Signatur: Length reduced Field: 50001, GSF: Length reduced Field: 50002, HRB: Length reduced Field: 60003, IBAN 2: Length reduced Field: 60008, IBAN 3: Length reduced Field: 60013, IBAN 4: Length reduced Field: 70300, Path scanned Purch. Doc.: Length reduced Table: 91, User Setup Field: 5310951, CrefoDefaultCustRefConsumer: Length reduced Table: 110, Sales Shipment Header Field: 5900, Service Mgt. Document: Deleted Field: 5157971, Bill-to E-Mail: Deleted Field: 99008509, Date Sent: Deleted Field: 99008510, Time Sent: Deleted Field: 99008515, BizTalk Shipment Notification: Deleted Field: 99008519, Customer Order No.: Deleted Field: 99008521, BizTalk Document Sent: Deleted Table: 120, Purch. Rcpt. Header Field: 99008500, Date Received: Deleted Field: 99008501, Time Received: Deleted Field: 99008507, BizTalk Purchase Receipt: Deleted Table: 204, Unit of Measure Field: 60000, Inventory Unit PV: Deleted Table: 295, Reminder Header Field: 5157970, Electronic Document Dispatch: Deleted Field: 5157971, Bill-to E-Mail: Deleted Field: 5157972, Send As Copy: Deleted Table: 297, Issued Reminder Header Field: 5157970, Electronic Document Dispatch: Deleted Field: 5157971, Bill-to E-Mail: Deleted Field: 5157972, Send As Copy: Deleted Table: 5107, Sales Header Archive Field: 5158202, Archiv DocID: Length reduced Field: 5157970, Electronic Document Dispatch: Deleted Field: 5157971, Bill-to E-Mail: Deleted Field: 5157972, Send As Copy: Deleted Field: 99008500, Date Received: Deleted Field: 99008501, Time Received: Deleted Field: 99008502, BizTalk Request for Sales Qte.: Deleted Field: 99008503, BizTalk Sales Order: Deleted Field: 99008509, Date Sent: Deleted Field: 99008510, Time Sent: Deleted Field: 99008513, BizTalk Sales Quote: Deleted Field: 99008514, BizTalk Sales Order Cnfmn.: Deleted Field: 99008518, Customer Quote No.: Deleted Field: 99008519, Customer Order No.: Deleted Field: 99008521, BizTalk Document Sent: Deleted Table: 5109, Purchase Header Archive Field: 99008500, Date Received: Deleted Field: 99008501, Time Received: Deleted Field: 99008504, BizTalk Purchase Quote: Deleted Field: 99008505, BizTalk Purch. Order Cnfmn.: Deleted Field: 99008506, BizTalk Purchase Invoice: Deleted Field: 99008507, BizTalk Purchase Receipt: Deleted Field: 99008508, BizTalk Purchase Credit Memo: Deleted Field: 99008509, Date Sent: Deleted Field: 99008510, Time Sent: Deleted Field: 99008511, BizTalk Request for Purch. Qte: Deleted Field: 99008512, BizTalk Purchase Order: Deleted Field: 99008520, Vendor Quote No.: Deleted Field: 99008521, BizTalk Document Sent: Deleted Table: 5900, Service Header Field: 5157970, Electronic Document Dispatch: Deleted Field: 5157971, Bill-to E-Mail: Deleted Field: 5157972, Send As Copy: Deleted Table: 5992, Service Invoice Header Field: 5157970, Electronic Document Dispatch: Deleted Field: 5157971, Bill-to E-Mail: Deleted Field: 5157972, Send As Copy: Deleted Table: 5994, Service Cr.Memo Header Field: 5157970, Electronic Document Dispatch: Deleted Field: 5157971, Bill-to E-Mail: Deleted Field: 5157972, Send As Copy: Deleted Table: 50001, Customizing Setup Field: 1040, Shipping Date: Deleted Field: 1050, Edit Post. Groups in Gen. Jnl.: Deleted Table: 51000, External Entries Setup Field: 1, Key: Data type changed Table: 75400, Mail Batch Field: 50000, Sofortversand: Deleted Field: 50001, mit Signatur: Deleted Field: 50003, Erstell-Datum: Deleted Field: 50004, Sonderbehandlung bei info@: Deleted Table: 75401, Mail Batch Line Field: 30, CI Name: Length reduced Field: 50000, Segment No.: Deleted Field: 50001, Salesperson Code: Deleted Field: 50002, Suchbegriff Unternehmen: Deleted Field: 50003, Contact Company No.: Deleted Field: 50004, zHd: Deleted Table: 75402, MailIT Setup Field: 50000, Quote Report ID: Deleted Field: 50002, Order Report ID: Deleted Field: 50004, Abnahme Report ID: Deleted Field: 50006, Bestellung Report ID: Deleted Table: 75403, MailIT Report Field: 1, ID: Data type changed Field: 3, User ID: Deleted Field: 2, Caption: Deleted Table: 5157823, Reserved 5157823 Field: 1, Dummy: Data type changed Table: 5157825, Reserved 5157825 Field: 1, Dummy: Removed from primary key - Data type changed Table: 5157917, Reserved 5157917 Field: 1, Dummy: Data type changed Table: 5158202, Document Archive Setup Field: 22, Sales Process Nos.: Length reduced Field: 23, Purchase Process Nos.: Length reduced Table: 5158221, Invoice Monitor Setup Field: 2, Default Journal Template Name: Length reduced Field: 3, Default Journal Batch Name: Length reduced Table: 5158225, DropZone Lookup Values Field: 1, Archive Document Type: Data type changed Field: 3, Document Type: Data type changed Field: 6, Value: Deleted Field: 5, Source Type: DeletedWas wäre der nächste Schritt? Einfach Sync. mit Force oder? BITTE NICHT…. Das wäre ein Fehler!

Das ist genaue was wir nicht wünschen, da wir nicht genaue wissen, welche Daten mit der Force Option gelöscht werden könnten.

Sogar wenn die Tabelle Item, nicht in dieser List ist, weiß man nicht genaue, was mit der Force Option genaue gelöscht wird, Grund sind Tabellenrelationen zwischen den Tabellen in der obigen Liste und andere Tabellen die bestehen und ggf. und angepasst wurden.

Was ist nun zu tun?

Bitte nehmen Sie Abstand von einem Sync. mit der Option Force, wenn es nicht wirklich sein muss.

Diesen Fehlern sollten erst behoben werden, dann können wir die Schema Sync. mit Validierung weiter ausführen.

Wie können wir den Fehler beheben?

1. Entweder schreibt man eigene Upgrade Codeunit, wie zu sehen in der Codeunit 104075, um zu erklären, was NAV mit den gelöschten Feldern tun soll. Das Upgrade Codeunit Konzept haben wir erst ab NAV 2015 präsentiert. Eine Erklärung mit Beispiel finde Sie z.B. hier: http://vjeko.com/upgrade-codeunits-in-nav-2015/ Und auch als Video: https://community.dynamics.com/nav/b...amics-nav-2015



So kann man als Beispiel die CU 104xxx anpassen:

DataUpgradeMgt.SetTableSyncSetup(DATABASE::"G/L Account", DATABASE::"MyUPG G/L Account",TableSynchSetup.Mode::Copy);DataUpgradeMgt.SetTableSyncSetup(DATABASE::Customer, DATABASE::"MyUPG Customer",TableSynchSetup.Mode::Copy);DataUpgradeMgt.SetTableSyncSetup(DATABASE::Vendor, DATABASE::"MyUPG Vendor",TableSynchSetup.Mode::Copy);Wo “MyUPGxxx” Tabelle, ist die wo wir die alten Strukturen und Daten temporär sichern möchten, der Rest von der Anpassung ist in der oben genannten Artikel erklärt.

2. Eine weitere Möglichkeit wäre ein einfachere Merge mit Cronus Objekte aus der neuen Version

Einfach die alten Objekte z.b. Cutomer und Vendor Tabellen nehmen und einen Compare-Merge mit selben Tabelle aus der neue Version durchführen.

Danach exportiert man die Merge Ergebnisse als fob aus der neuen Version.

Wenn nun die FOB importiert wurde, sollte die Schema Sync mit Validierung einwandfrei ausgeführt werden können und nur dann es ist garantiert, dass dieser Fehler nicht mehr auftaucht.







Das Upgrade ist nun erfolgreich ausgeführt worden:





Mit freundlichen Grüßen,

Abdelrahman Erlebach
Microsoft Dynamics Germany

Special Thanks for Duilio Tacconi for his great contribution in the area of schema Sync. and data Upgrade.

Disclaimer Because some jurisdictions do not allow the exclusion or limitation of liability for consequential or incidental damages, the limitation and disclaimer set out below may not apply. ACCEPTANCE AND DISCLAIMER OF WARRANTY The software contained in this communication is provided to the licensee “as is” without warranty of any kind. The entire risk as to the results, usefulness and performance of the software is assumed by the licensee. Microsoft disclaims all warranties, either express or implied, including but not limited to, implied warranties or merchantability, fitness for a particular purpose, correspondence to description, title and non-infringement. Further, Microsoft specifically disclaims any express or implied warranties regarding lack of viruses, accuracy or completeness of responses, results, lack of negligence, and lack of workmanlike effort, for the software. LIMITATION OF LIABILITY In no event shall Microsoft be liable for any direct, consequential, indirect, incidental, or special damages whatsoever, including without limitation, damages for loss of business profits, business interruption, loss of business information, and the like, arising out of the performance, use if, or inability to use, all or part of either the software, even if Microsoft has been advised of the possibility of such damages.



Источник: https://blogs.msdn.microsoft.com/ger...tricks-teil-3/
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
german_nav_developer: Buildnummern-Übersicht Microsoft Dynamics NAV 2013 Blog bot NAV: Blogs 0 15.05.2016 18:12
Platform updates overview - 3.70.B - NAV2009 R2 Blog bot Dynamics CRM: Blogs 0 07.02.2011 22:06
german_nav_developer: Buildnummern-Übersicht Microsoft Dynamics NAV 2009 SP1 Blog bot Dynamics CRM: Blogs 0 11.06.2010 16:33
german_nav_developer: Buildnummern-Übersicht Microsoft Dynamics NAV 2009 Blog bot Dynamics CRM: Blogs 0 04.06.2010 13:21
Nav developer: Overview of NAV blogs in 2008 Blog bot Dynamics CRM: Blogs 0 07.12.2008 02:18

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:08.