![]() |
Anwendung löschen Daten in Datenbank
Hallo DP,
Ich stehe vor einem riesen Problem. Ich habe für eine kleine Firma ein Tool geschrieben (in D7), welchen Daten aus einer dBase-Clipper Datenbank auswerten kann. Dafür für benutze ich den ADS LocalServer 7.x. Die eigentliche Haupt-Anwendung der dBase-DBF ist ein DOS-Programm (mehr als 10 Jahre alt). Das ganze läuft auf einem WinXP/SP2 Rechner. Mein Prog als Windows-Anwendung und das DOS-Prog in/auf der Console. Das "angebliche" Problem, welches heute seit ca. 2 Jahren das dritte mal aufgetreten ist (mein Prog ist täglich im Einsatz): Sobald mein Prog geschlossen wird, werden willkürlich Daten in der Datenbank überschrieben. "Natürlich" ist mein Programm schuld. Nun das eigenartige: Es werden nur einzelne Felder in den DBF-Dateien mit 0.0 überschrieben, in Tabellen die mein Programm überhaupt nicht angreift, aber im Augenblick des Beendens, in der DOS-Hauptanwendung geöffnet sind. Ich schicke keine Nachrichten an das DOS-Prog. Beim Beenden meines Prog wird lediglich eine DLL entladen, die ADSConnection getrennt, 2 eigene Klassen (ohne ADS) freigeben und das Mutex-Handle geschlossen. Könnt ihr euch eine Konstellation vorstellen, wie so etwas passieren kann? Kann es sein, dass mein Prog irgendwie den Speicher des DOS-Progs überschreibt? Laufen DOS-Progs nicht sowieso in einem eigenen geschützten Speicherbereich? Wie stehen die Chancen, dass tatsächlich mein Programm diesen Mist baut? Könnte es sein, das ADS irgendwo einen Bug hat? Wisst ihr was? ... oder evtl. WinXP bezüglich dBase?? Reproduzieren lässt sich der Fehler natürlich nicht. (wäre ja zu schön) Bittend um Hilfe und verzweifelte Grüße gmc |
Re: Anwendung löschen Daten in Datenbank
Zitat:
Falls ja, gäbe es eine einfache Möglichkeit: Die Tabellen müssen in einem NTFS-Verzeichnis liegen und der Benutzer darf keine Schreibrechte haben. |
Re: Anwendung löschen Daten in Datenbank
Also ich stelle hier mal eine These auf.
Vermutlich kommt das DOS-Programm durcheinander, wenn Dein Programm die Verbindung zur DB schliesst. Dann werden vom DOS-Programm die Felder auf 0.0 (Initialwert) gesetzt. Zu Deinen Fragen: Es kann nicht sein, dass Dein Programm den Speicher des DOS-Programms überschreibt. Dein Programm macht den Mist nicht, ist aber vermutlich der Auslöser dafür (s.o.). Bei ADO gibt es doch sicher auch einen Logger, der alles protokoliert, was zur DB geschickt wird. Somit kann man dann herausfinden, welches Stück Software dafür verantwortlich ist. |
Re: Anwendung löschen Daten in Datenbank
Wer halt immer noch mit solchen mittlerweilen fragilen DB's arbeitet.
Was spricht dagegen das du die DB physikalisch kopierst und dann mit der Kopier arbeitest. Dann kannst du definitiv nichts mehr verschulden. |
Re: Anwendung löschen Daten in Datenbank
Zitat:
Es gibt halt Anwendungen (welche zugegebenermaßen recht speziell sind), die sich in ihrem Bereich bewährt haben, und zu denen es bis heute keine Alternativen, welche 'modernere' Datenbanksysteme einsetzen, gibt. Zumindest keine Alternative, die mit der bewährten Lösung konkurrieren könnte. Und die Kundschaft trennt sich nur ungern von Bewährtem. |
Re: Anwendung löschen Daten in Datenbank
Hiho,
nur mal eine kurze Zwischenfrage. Wird hier zufällig mit der "TES"-Software gearbeitet? |
Re: Anwendung löschen Daten in Datenbank
Zitat:
|
Re: Anwendung löschen Daten in Datenbank
Zitat:
Zitat:
Zitat:
ADS ist die einzigste Komponente, die ich (damals) gefunden habe, die das kann/konnte. Zitat:
Zitat:
und Änderungen die mit dem DOS-Prog gemacht wurden müssen sofort im meinen Tool verarbeitet werden können und Rechner + OS aus dem letzten Jahr Tausend. :zwinker: Zitat:
Danke euch für das Kopfzerbrechen :drunken: gmc |
Re: Anwendung löschen Daten in Datenbank
Hallo,
schreibende Zugriffe mit zwei verschiedenen ADS-Versionen oder/und DOS-Treiber und ADS-Treiber (DBFCDX) erzeugen zum Teil inkompatible Indizes. Schreiboperationen können bei defekten Indizierungen zu ungewünschten Nebeneffekten führen. Dieses Phänomen konnten wir schon mehrfach beobachten. Insbesondere in Multiuser-Environments wo das unterschiedliche Lockingverhalten der jeweiligen Treiber zu Schreibkollisionen führen kann. ByteZero wird unterschiedlich benutzt. Und noch etwas: der Name der unserer Software lautet HEIZTEC/2 und nicht Veridis... Grüße HeiztecSupport |
Re: Anwendung löschen Daten in Datenbank
Zitat:
Ansonsten Tipps von HeiztecSupport verwenden und das tägliche Stoßgebet bringen das nicht irgendein Windows-Update die Sache irgendwann mal komplett lahm legt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz