zerstörte DBF

30/11/2009 - 09:04 von Dieter Tautz | Report spam
Hallo.

Ich kàmpfe noch immer mit folgendem Problem:
Datenbank befindet sich im Netz (windows Server 2008 SP2). Auf dem Client
làuft Windwos 7. Oplock ist abgeschaltet (Server + Client). Ich habe eine
Tabelle, bei der zwei Tabellenfelder vom Typ integer indexiert sind (jeweils
einfacher Index). Die Indexdatei ist eine CDX.
Nach dem Anfügen von Datensàtzen mit "Insert into ... from memvar" erhalte
ich sporadisch (d.h. nicht bei jedem Insert) eine zerstörte DBF. Nach einem
reindex ist aber wieder alles in Ordnung. In Verbindung mit einem XP-Client
habe ich dieses Verhalten bisher (noch) nicht festgestellt. Hat jemand eine
Idee, wie man sich hier systematisch an die Ursache rantasten kann ?

Dieter
 

Lesen sie die antworten

#1 Olaf Doschke
30/11/2009 - 11:52 | Warnen spam
Idee, wie man sich hier systematisch an die Ursache rantasten kann ?



Im laufenden Betrieb ist es schwierig.

Das SMB2 Protokoll hast Du ja quasi schon als Grund ausgeschaltet.
Aber auch wenn dieselbe Hardware unter XP fehlerfrei làuft, könnte
es am Netzwerk und der Netzwerkhardware liegen, z.B. mangelhafte
Vista/2008 SP2/Win7-Treiber.

Um das auszuschließen müßte man die VFP Datenbank mal zu einem
Client bringen, wobei das natürlich nicht nur das Netzwerk, sondern
auch andere Clients ausschaltet.

Dann vielleicht mal einen Linux-Fileserver mit Samba aufbauen und sehen
ob ein anderer Server einen Unterschied ausmacht bringt.

Protokollieren sollte auch helfen, insbesondere von welcher Station
in welche Tabelle was gespeichert werden soll, bevor das Tableupdate()
kommt.

Hast Du schon TABLEVALIDATE auf 11?
Und reagierst Du auf Error 3 und 108? Wie?

Machst Du RETRY aus dem Errorhandler heraus? Machst Du ROLLBACKs
von Transaktionen, wenn TXNLEVEL()>0 vor einem QUIT oder CANCEL
im Errorhandling?

Da Du alles in einer, der generellen Datasession aufmachst, hast Du ein
und dieselbe Tabelle öfter mal unter verschiedenen Aliasen offen? U.u. hast
Du dann immer die Korruption, wenn die Tabelle in 2 Aliasen auf
verschiedenen Stànden ist? Machst Du SYS(1104) nach Transaktionen/
Speichern?

Tschüß, Olaf.

Ähnliche fragen