Lade...
 

CX_DB_UTILITY::FindObjectsReferencingPosition2

CX_DB_UTILITY::FindObjectsReferencingPosition2

Beschreibung:

Finde alle Objekte mit Referenzen auf einen bestimmten Ort in der Datenbank.
Sinn der Methode: es gibt eine lokale Datenbank-Korruption. Kennt man alle Objekte, die andere Objekte in diesem Bereich referenzieren, kann man - mit Datenverlust - die Korruption reparieren.
FindObjectsReferencingPosition2 ist eine Erweiterung von CX_DB_UTILITY::FindObjectsReferencingPosition, mit der man sehr große Segmente analysieren kann (Nachteil - dauert länger).
Mit zwei zusätzlichen Parametern kann man die Analyse eines Segments aufteilen - siehe Code Beispiel
 

In der aktuelle Version ist der "interessante Ort" eines möglichen Schadens ein Cluster.
Eine Erweiterung auf eine Offset-Bereich ist einfach zu implementieren. Dann machen, wenn es wirklich gebraucht wird!

Code-Beispiel:

Var(dbUtil) 
GetManager(OBJECT) Call(GetDBUtility) -> dbUtil 
// check 1st 1 000 000
"affectedObjects1.log" 2010 /* segment to check */ 5044 /* segment with damage */ 304 /* bad cluster */  0 100000 dbUtil Call(FindObjectsReferencingPosition2

// check 2nd 1 000 000

"affectedObjects2.log" 2010 /* segment to check */ 5044 /* segment with damage */ 304 /* bad cluster */  100000 2000000 dbUtil Call(FindObjectsReferencingPosition2

.  .  .
 

 

Stack
Stack Position Objekttyp Kurzbeschreibung
Stack(In) Top OBJECT Database Utility
  Top-1 INTEGER Nummer m = nach dem m-ten Objekt abbrechen
  Top-2 INTEGER NUmmer n = nach dem n-ten Objekt analysieren
  Top-3 INTEGER (Ziel-) Cluster
  Top-4 INTEGER (Ziel-) Segment
  Top-5 INTEGER Segment, das analysiert werden soll
  Top-6 STRING das Log-File
Stack(Out)   -  

Funktionsaufruf: Call(FindObjectsReferencingPosition)