ich habe hier ein verzwicktes Problem mit einem neuen Server und meiner Xbase 2.0 (1185) Software
Ein von mir erstelltes mehrplatzfähiges Warenwirtschaftsprogramm lief bereits seit 10 Jahren erfolgreich mit einem Quellcode den wir mit Xbase++ 1.90.355 erstellt und kompiliert haben.
Nun haben sich zwei Dinge grundlegend geändert.
1. Wir haben den Quellcode auf die aktuelle Xbase Version 2.0 (1185) portiert. Das war nicht schwer, alles funktionierte auf Anhieb, bis auf die DLL‘s von Fremdanbietern wie z.B. XB2Net oä.- die wir nachlizensiert und eingebunden haben.
2. Der Kunde hat durch seinen Administrator einen neuen Server angeschafft und auf einem der virtuellen Server das Windows Betriebssystem Windows Server 2019 installiert (Version 1809)
Dort haben wir die aktuellste Version vom ADS-Datenbankserver (12.02) für 50 User installiert. (die gleiche Version lief bereits auf dem alten Server)
Alle User (ca. 30) haben neue Windows 10 Versionen auf den Workstations installiert bekommen.
SMB1 ist nicht freigeschaltet auf dem Server.
Jetzt zum Problem:
Das Programm stürzt an verschiedenen Stellen immer mal wieder ab, wenn z.B. Datenbankoperationen ausgeführt werden. (z.B. Skip, DbClose oä.) Die Fehlermeldung lautet dann immer Fehlercode 73 (Fehler beim Lesen). Teilweise kommen auch Meldungen wie: Betriebssystemfehler 40 oder Error 8999.
Der DbClose error kommt z.B. häufig, wenn der User aus einem Browser mit ESC zurückgeht in das vorherige Menü. In diesem Falls schließt unser Programm lediglich eine temporäre Dbase-Datei, die vorher im Browser einwandfrei angezeigt wurde.
Es wird lediglich entweder erst ein Set Index to und dann ein Close Befehl abgesetzt oder nur der Close Befehl. Das funktionieret 20 mal korrekt und z.B. beim 21.mal stürzt das Programm mit den o.a. Fehlermeldungen ab.
Ich habe das Gefühl, dass die temp. Datenbank für Bruchteile einer Sekunde nicht erreichbar ist, und dann der Absturz kommt.
Zum technischen Hintergrund unserer Software kurz folgender Hinweis:
Wir verwenden im Programm 3 Datenbanktreiber DBFNTX, DBFCDX und ADSDBE. (die wurden in der DBESYS.prg erstellt.)
Code: Alles auswählen
*******************************************************************************
* DbeSys() wird bei jedem Programmstart ausgeführt
*******************************************************************************
****************
PROCEDURE dbeSys()
****************
public oAdsSession2
IF ! DbeLoad("ADSDBE")
Fehler("ADSDBE"+ MSG_DBE_NOT_LOADED)
endif
IF ! DbeLoad("DBFDBE")
Fehler("DBFDBE"+ MSG_DBE_NOT_LOADED)
endif
IF ! DbeLoad("NTXDBE")
Fehler("NTXDBE"+ MSG_DBE_NOT_LOADED)
endif
IF ! DbeLoad("CDXDBE")
Fehler("CDXDBE"+ MSG_DBE_NOT_LOADED)
endif
IF ! DbeBuild("DBFNTX","DBFDBE","NTXDBE")
Fehler("DBFNTX"+ MSG_DBE_NOT_CREATED)
endif
IF ! DbeBuild("DBFCDX","DBFDBE","CDXDBE")
Fehler("DBFCDX"+ MSG_DBE_NOT_CREATED)
endif
// oAdsSession2 := DacSession():New("DBE=ADSDBE;SERVER="+Diskname()+":"+dirname()+";ADS_REMOTE_SERVER")
DBESETDEFAULT("ADSDBE")
DbeInfo( COMPONENT_ORDER, ADSDBE_TBL_MODE, ADSDBE_CDX )
DbeInfo( COMPONENT_DATA , ADSDBE_TBL_MODE, ADSDBE_CDX )
DbeInfo( COMPONENT_DATA, ADSDBE_LOCK_MODE, ADSDBE_PROPRIETARY_LOCKING )
DbeInfo( COMPONENT_ORDER, ADSDBE_INDEX_EXT, "CDX" )
DBESETDEFAULT("DBFCDX")
DbeInfo( COMPONENT_ORDER, CDXDBE_MODE, CDXDBE_COMIX )
DBESETDEFAULT("ADSDBE")
SET RIGHTS CHECKING OFF
return
Code: Alles auswählen
FEHLERPROTOKOLL von "Z:\Ledick\WW2000.exe" Datum: 10.03.20 10:23:34
Xbase++ Version : Xbase++ (R) Version 2.00.1159
Betriebssystem : Windows 10 1809 Build 17763
Programmversion : 8.56h/03.20/ T:50
------------------------------------------------------------------------------
oError:args :
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: N
oError:cargo : NIL
oError:description : Fehler beim Lesen
oError:filename :
oError:genCode : 73
oError:operation : DbCloseArea
oError:osCode : 0
oError:severity : 2
oError:subCode : 8999
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von DETAILAUFTRAGSUEBERSICHTKUNDE(2839)
Aufgerufen von UDFKUNDENAUFTRAGSUEBERSICHT(1962)
Aufgerufen von (B)DBEDIT(0)
Aufgerufen von DBEDIT(404)
Aufgerufen von DBR2(1320)
Aufgerufen von KUNDENAUFTRAGSUEBERSICHT(1814)
Aufgerufen von (B)AUFMENUNEU(429)
Aufgerufen von NEWMENU(12819)
Aufgerufen von AUFMENUNEU(445)
Aufgerufen von (B)AUFMAIN(261)
Aufgerufen von NEWMENU(12819)
Aufgerufen von AUFMAIN(270)
Aufgerufen von MAIN(261)
------------------------------------------------------------------------------
FEHLERPROTOKOLL von "Z:\Ledick\WW2000.exe" Datum: 10.03.2020 10:23:49
Xbase++ Version : Xbase++ (R) Version 2.00.1159
Betriebssystem : Windows 10 1809 Build 17763
Programmversion : 8.56h/03.20/ T:53
------------------------------------------------------------------------------
oError:args :
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: N
oError:cargo : NIL
oError:description : Fehler beim Schließen einer Datei
oError:filename :
oError:genCode : 72
oError:operation : DbCloseArea
oError:osCode : 0
oError:severity : 2
oError:subCode : 8999
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von KUNDENAUFTRAGSUEBERSICHT(1817)
Aufgerufen von (B)AUFMENUNEU(429)
Aufgerufen von NEWMENU(12819)
Aufgerufen von AUFMENUNEU(445)
Aufgerufen von (B)AUFMAIN(261)
Aufgerufen von NEWMENU(12819)
Aufgerufen von AUFMAIN(270)
Aufgerufen von MAIN(261)
Verwendung finden im Programm jedoch nur der CDX und der ADS Treiber. Die Haupttabellen (Kunden, Artikel, Auftrag etc.) werden alle mit dem ADS-Treiber geöffnet beim Programmstart.
Wenn wir eine Datentabelle zusammen stellen, führen wir auf dem SQL-Server von ADS eine Query aus und stellen das Resultset in einer temp. Dbase Datei zur Verfügung, die wird dann immer mit den CDX-Treibern geöffnet im Tbrowse dargestellt.
Die meisten Fehler treten dann beim Skip (Dbskipper des Browsers) oder beim Close der Datei (s.o.) auf. Die Dbase-Datei ist nicht beschädigt.
Wie kann das sein ?
Tipps aus der Usergroup haben mich bisher nicht weiter gebracht.
Das alte Programm auf dem alten Server lief einwandfrei.
Bei einem anderen Kunden, der ebenfalls ein neu mit Xbase 2.0 kompiliertes Programm einsetzt gibt es überhaupt keine Probleme.
Ich nehme an, dass die Probleme an der neuen Netzwerkumgebung des Kunden liegen. (nur was sollen wir dort überprüfen ?)
Wenn ich mich per Remote auf den Server einwähle gibt es keinerlei Abstürze, nur auf den Workstations und den Remotezugängen der Außendienstler, die sich jedoch nicht auf den Server einloggen, sondern über eine andere IP auf dem Terminalserver arbeiten.
Habt ihr eine Idee ?
Danke schon mal ...
Liebe Grüße Rudi