Dynamics AX: Was macht eine Synchronisation?

Im Zuge eines Reuqest bei Microsoft hatten wir die Frage, was genau denn eine Synchronisation macht. Diese wurde uns netterweise beantwortet und im folgenden findet Ihr nun diese Antwort in meinen Worten, also so wie ich die Antwort verstanden habe und sie teilweise unter AX 4.0 auch ausprobiert habe.

Was genau macht die Synchronisation?

Aus Sicht von AX ist der AOT das Maß der Dinge, d.h. die tatsächliche Datenbankstruktur ist sekundär.

Aus diesem Grund prüft AX bei der Synchronisation, ob die Definitionen im AOT mit denen der Datenbank übereinstimmen.
Dafür wird die Tabelle SQLDICTIONARY herangezogen, in der die Datenbank-Definitionen gespeichert sind (Wie heisst die Tabelle, welche Felder enthält sie usw.).

Diese Tabelle wird bei der ersten Initialiserung erstellt und bei der ersten Synchronisation befüllt. Diese Tabelle enthält Informationen, wie das Datenmodell (=Tabellen) in der SQL-Datenbank aussieht bzw. aussehen soll.

Findet der Kernel im Zuge einer Synchronisation nun Unterschiede zwischen dem AOT und der Datenbank, wird die Definition in der Tabelle SQLDICTIONARY, also in der Datenbank, angepasst.

Dabei ist es manchmal notwenig, daß eine Tabelle gelöscht und anschließend neu angelegt werden muss. Hierfür legt AX eine temporäre Kopie der Tabelle an, kopiert
die Daten in diese temporäre Tabelle, löscht die original Tabelle, legt sie neu an und kopiert die Daten wieder zurück.

Wenn für eine Tabelle keine Definitionen in der Tabelle SQLDICTIONARY gefunden werden, versucht die Synchonisation diese Tabelle in der Datenbank anzulegen.
Das hat zur Folge daß, wenn man beispielsweise eine Tabelle direkt aus der Datenbank löscht, diese im AOT erhalten bleibt (selbst wenn man auch die zugehörigen Einträge aus der Tabelle SQLDICTIONARY löscht).
Synchronisiert man diese Tabelle nun im AOT wird diese in der Datenbank aufgrund der Informationen im AOT angelegt. Dies übrigens geschieht gleichermaßen, wenn man im AOT Felder oder Indizes ändert.
Legt man aber z.B. bei einer solchen, nur im AOT vorhandenen, Tabelle eine neue Methode an, erfolgt allerdings keine Synchonisierung in die Datenbank. Zugreifen auf den Inhalt einer Tabelle kann man zu diesem Zeitpunkt natürlich auch nicht (es wären aber logischerweise auch keine Daten vorhanden).

Übrigens: Wenn während einer Synchronisaton Fehler auftreten, findet man deren Log-Einträge im Eventlog des AOS-Servers.


Kommentar hinzufügen
 
 

 

 
 
 
Beiträge des aktuellen Monats
Juni 2022
MoDiMiDoFrSaSo
 12345
6789101112
13141516171819
20212223242526
27282930 
 
© 2006-2022 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu