Ich habe eine DB, die mir Probleme bereitet.
Bei Anwendung von “Reparieren und Optimieren” werden mir ca. 400 Fehler angezeigt, die ich dann repariere. Das Ganze wird mit “Reparatur fehlgeschlagen, 400 Fehler übrig” beendet. Die verwaisten Dateien finde ich über das Protokoll, aber 400 vereiste Dateien manuell herauszusuchen, ist ein bisschen arg mühsam.
Letztendlich habe ich die DB neu aufgebaut, leider mit dem Ergebnis, dass die 400 Fehler bestehen bleiben.
Was habe ich nun noch für Möglichkeiten?
Handelt es sich um indizierte Dateien?
Sind alles importierte Dateien
Dieses Skript legt alle Dokumente mit fehlender Datei in den Papierkorb:
-- Trash Missing Files
tell application id "DNtp"
set theDatabase to current database
set theContents to contents of theDatabase
show progress indicator "Checking..." steps (count of theContents)
try
repeat with theRecord in theContents
set thePath to path of theRecord
if thePath is not missing value and length of thePath > 0 then
try
set pathExists to false
tell application "Finder" to if exists thePath as POSIX file then set pathExists to true
if not pathExists then move record theRecord to trash group of theDatabase
end try
end if
step progress indicator (name of theRecord) as string
end repeat
end try
hide progress indicator
end tell
Das Problem trat auf, nachdem ich in die Datenbank eine größere Menge an Dokumenten importiert hatte. da muss irgendwas durcheinander gekommen sein.
Ich habe das Problem jetzt auf "rustikale"Art gelöst. Glücklicherweise hatte ich an der Betroffenen DB nicht viel geändert, so dass ich im TM-Backup nach dem zuletzt funktionierenden Backup suchen konnte.
Zu Ihrem Script: Das ist ja ganz gut und schön, aber die Dokumente selbst scheinen ja (aus was für Gründen auch immer) verloren gegangen zu sein. Insofern holt das Skript die Dokumente auch nicht zurück, sondern löscht lediglich die defekten Einträge aus der DB