Falsches Inventurdatum in den Rechnereigenschaften

Antworten
loetscan
Beiträge: 53
Registriert: 16. Dez 2004, 17:37
Kontaktdaten:

Falsches Inventurdatum in den Rechnereigenschaften

Beitrag von loetscan » 04. Sep 2006, 16:19

Ich muss mich nochmal dem Thema "Clients umbenennen in der Konsole" annehmen. Mein erster Input dazu, siehe http://www.matrix42.com/forum/viewtopic.php?t=4366 wurde ja inzwischen von Matrix42 bestens gelöst.

Folgendes: ich wollte mal nach Client-Leichen in unserer Empirum-DB suchen und habe dazu einen Report nach 'Inventurdatum < XY' erstellt. Der Filter in der Konsole läuft prächtig, diese Liste habe ich dann nach Excel exportiert. Hier musste ich nun feststellen, dass einige Clients doppelt vorkamen: einmal mit Inventurdatum z.B. vom 6.3.06 und einmal mit aktuellem Datum vom 3.9.06. In den Eigenschaften des Rechners in der Konsole wird das alte Datum angezeigt (daher taucht er ja auch in diesem Filter auf).
Nun habe ich überprüft, ob auf dem Client eine Inventur läuft und was mit diesen Daten passiert. Manuelles Anstossen der Inventur -> wird vom EmpInv-Dienst eingelesen. Soweit alles ok, bis auf das Datum das nicht aktualisiert wird.
Mit DebugView habe ich dann folgenden Fehler gesehen:

[2552] Client-DB-Fehler:
[2552] DELETE FROM InvComputer WHERE ID = 1731
[2552] SQL ERROR: [Microsoft][ODBC SQL Server Driver][SQL Server]DELETE statement conflicted with COLUMN REFERENCE constraint 'invautfiles_invcomputer'. The conflict occurred in database 'BelimoCH', table 'InvAUTFiles', column 'InvComputerID'.
[2552] SQL Statement: DELETE FROM InvComputer WHERE ID = 1731
[2552] Die Update-Daten ließen sich nicht schreiben!

Genaueres Studium der DB hat mir dann folgende Erkenntnis geliefert:
in der Tabelle "InvComputer" gibt's 2 Einträge für diesen Client. Ein Eintrag mit dem alten Inventurdatum, einer mit dem neuen. client_id ist die gleiche, aber der Computernamen ist anders.
Will heissen: dieser Client wurde von uns umbenannt, Empirum hat dies in dieser Tabelle nicht nachgeführt und EmpInv dann einen zweiten Eintrag erstellt. Da die Konsole offenbar den ersten Eintrag mit der richtigen client_id anzeigt, wird das alte Inventurdatum gezogen.

Interessanterweise versucht EmpInv offenbar den alten Eintrag zu löschen. Dummerweise gibt's aber in der Tabelle "InvAutFiles" einige Einträge zu dieser ID und die beiden Tabellen sind über die ID bzw. InvComputerID in der 'InvAutFiles'-Tabelle verbunden, daher schlägt die Löschung fehl und die obige Fehlermeldung lässt sich in DebugView beobachten.

Ich sehe nun 3 Möglichkeiten:

1. manuelles löschen der alten Einträge (Workaround, aber löst das Problem nicht grundsätzlich).
2. Setzen des Flags "Cascade Delete Related Records" auf der Verknüpfung der beiden Tabellen. D.h. wenn ein Eintrag in InvComputer gelöscht wird, werden auch die verbundenen Einträge in InvAutFiles gelöscht und EmpInv könnte seinen Job erledigen.
3. Empirum ändert beim Umbenennen in der Konsole auch das Feld Computername in der Tabelle InvComputer.

Weiss jemand noch eine bessere Lösung oder habe ich was übersehen?

Benutzeravatar
Hendrik_Ambrosius
Moderator
Moderator
Beiträge: 7599
Registriert: 13. Dez 2004, 23:10
Wohnort: Adendorf/Lüneburg

Beitrag von Hendrik_Ambrosius » 04. Sep 2006, 16:22

Lassen Sie doch mal das Script "Delete_Double_Clients.sql" aus dem Custom-Ordner laufen.
Vorher aber bitte sicherheitshalber ein Backup der DB machen!
Hendrik Ambrosius / Senior Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 AG | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com

Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 AG or of the support team.

loetscan
Beiträge: 53
Registriert: 16. Dez 2004, 17:37
Kontaktdaten:

Beitrag von loetscan » 04. Sep 2006, 16:37

Beim Ausführen des Skripts erhalte ich einen Fehler. Der erste Befehl "USE [<LocationDB>] GO" wird nicht akzeptiert. Auch wenn ich den Platzhalter durch den Namen unserer LocationDB ersetzte klappt's nicht.
Ausserdem denke ich hilft's nicht. Denn wenn ich das Skript recht verstehe sucht es nach doppelten Einträgen in der Tabelle "clients". Damit wird der überflüssige alte Eintrag in der "InvComputer" nicht berührt... Ich habe jetzt meine Lösung 2 aktiviert und es funktioniert wirklich, EmpInv entfernt den alten Eintrag!

Antworten

Zurück zu „Inventory“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste