Nach dem Update auf 2024.3.0 vom 18. Oktober erscheint beim Import der Untis-Datei in die Datenbank o.a. Fehlerhinweis. Hat jemand das schon einmal gesehen bzw. kann mir erläutern, was das Problem ist.
Beschreibung für unser Problem: Bei uns trat das Problem mit der Version 2021 und der MSSQL Datenbank auf. Eine Analyse zeigte, dass Untis eine DoubleKey-Violation auf der Datenbank auslöst (1). Im zusammengesetzten Schlüssel der UntisSettings-Tabelle fehlt die USER_ID, was zu Problemen führt. Untis muss nämlich entscheiden, ob der Datensatz ein UPDATE eines vorhandenen Datensatzes mit gleichem Schlüssel ist oder ein INSERT eines neuen Datensatzes. Zu doof, dass Untis und die Datenbank nicht das selbe Verständnis haben, wie der Schlüssel aussehen soll. Untis liest den Datensatz mit der USER_ID, stellt dann unter Umständen fest, es gibt mit dieser USER_ID keinen Schlüssel und führt ein INSERT für den Datensatz aus. Die Datenbank sieht das natürlich anders, da die USER_ID laut Datenbankdefinition kein Teil des Schlüssels ist. So kann bereits ein Datensatz von einem anderen Anwender gespeichert sein und es kommt so zu besagter DoubleKey-Violation.
Unsere Lösung: Wir haben uns beholfen, indem wir einen Datenbank-Trigger auf die UntisSettings-Tabelle gesetzt haben, der erst überprüft, ob bereits ein Datensatz mit dem Schlüssel (gleichgültig der USERID) vorhanden ist und wenn ja, aus dem INSERT ein UPDATE macht. Dadurch überschreiben sich zwar die Anwender ihre Fenster- und Farbeinstellungen gegenseitig, aber das ist immer noch besser als ein Absturz von Untis beim Speichern. Der Trigger verlangsamt zwar etwas den Speichervorgang (0,1 sek) auf diese eine Tabelle, aber dafür hatten wir damit keine seltsamen Nebeneffekte (Absturz beim Start usw.), als wir versuchten die USER_ID in den Schlüssel der Tabelle aufzunehmen.
1:Für nicht Datenbänkler: Jeder Datensatz in einer Datenbanktabelle hat einen eindeutigen Schlüssel (Primary Key) über den dieser identifiziert wird. Untis benutzt zusammengesetze Schlüssel, die sich aus mehreren Spalten zusammen bauen. Z.B. SCHOOL_ID+VERSION_ID+USER_ID. Untis hat versucht einen Neuen Datensatz zu speichern, obwohl bereits ein vorhandener Datensatz mit dem selben Schlüssel gespeichert ist.
Wir hoffen, dass dir unser Forum gefällt und du dich hier genauso wohlfühlst wie wir.
Wenn du uns bei der Erhaltung des Forums unterstützen möchtest, kannst du mit Hilfe einer kleinen Spende dazu beitragen,
den weiteren Betrieb zu finanzieren.