Seite 1 von 1

oDacSession:GetLastError() nicht im ADS_LOG?

Verfasst: Mo, 06. Mär 2017 18:38
von DelUser01
Hallo

ich wollte schauen, ob die in meinem Programm gemeldeten Fehler im ADS Error-Log zu finden sind.
z.B.
oDacSession:GetLastError() meldet Error 5004
aber im ADS_LOG\ADS_ERR.ADT steht das nicht drin.

(Es gibt noch eine DBF ADS_LOG\ADS_ERR.DBF da steht fast garnichts drin.)

Das verstehe ich nicht - Ein Fehler der von Xbase++ DacSession gemeldet wird müsste seinen Ursprung doch auf der ADS-Seite haben und ADS müsste einen Fehlereintrag erzeugen. Oder der 5004 wird wegen "Geringfügigkeit" nicht protokolliert...

oADS:GetLastError() Nr: 5004
oADS:GetMessage: Error 5004: Either ACE could not find the specified file, or you do not have sufficient rights to access the file.

Re: oDacSession:GetLastError() nicht im ADS_LOG?

Verfasst: Mo, 06. Mär 2017 20:37
von ramses
Either the Advantage Client Engine could not find the specified file, or you do not have sufficient rights to access the file. An incorrect path may cause this error. To identify an incorrect path, change the Advantage Database Server security method to "Ignore Rights" in your application. For example, for the TDataSet Descendant, set the AdsTableOptions' AdsRightsCheck property to False. When restarted, the application will generate a 7008 error, which will be logged in the Advantage error log file. Verify that the path in error log's "filename" column is correct.

Re: oDacSession:GetLastError() nicht im ADS_LOG?

Verfasst: Mo, 06. Mär 2017 22:16
von DelUser01
Hallo Carlo

das würde ja heißen, dass der Fehler in Xbase++
oADS:GetMessage: Error 5004: Either ACE could not find the specified file, or you do not have sufficient rights to access the file
( 5004 laut ADS = AE_FILE_NOT_FOUND )
dem Eintrag im ADS_LOG
Error_Code: 7008 Advantage server file open failure
entspricht. Sehr seltsam.

RightsCheck habe ich inzwischen ausgeschaltet.

Re: oDacSession:GetLastError() nicht im ADS_LOG?

Verfasst: Di, 07. Mär 2017 6:29
von ramses
Hallo Roland

im Serverlog beim Fehler 7008 stimmt der da angegebene Pfad? Liegt die Datei wirklich da? Ist noch durch keinen anderen Prozess in Gebrauch? Auch Antivirus/Backup ist ein Prozess.
Ist der Dateiheader evtl. in den unbenutzen Stellen mit Müll gefüllt? (ist bei alten von Clipper erstellten DBF's ab und zu so)

Gruss Carlo

Re: oDacSession:GetLastError() nicht im ADS_LOG?

Verfasst: Di, 07. Mär 2017 8:50
von nightcrawler
Fehler der 5000er-Klasse sind Client-seitig. Der Server ist da nicht involviert, kann daher auch nicht loggen.

Re: oDacSession:GetLastError() nicht im ADS_LOG?

Verfasst: Di, 07. Mär 2017 9:16
von ramses
Da musst du aber für den 5004 ergänzen dass dieser Fehler auftritt wenn der Client die Datei nicht sieht. Infolge fehlender Rechte oder falscher Schreibweise des Pfads falschem oder fehlendem Laufwerk Mapping falschem Aufruf usw.
Das Auschalten des "AdsRightsCheck" bewirkt dass der Client die Anfrage obwohl er die Datei nicht sieht an den Server sendet un dieser dann einen Fehler 7008 loggt und auch die Angabe des Names der zum Fehler geführt hat.

Re: oDacSession:GetLastError() nicht im ADS_LOG?

Verfasst: Di, 07. Mär 2017 22:42
von DelUser01
Hallo Carlo
ramses hat geschrieben:stimmt der da angegebene Pfad?
Ja
ramses hat geschrieben:Liegt die Datei wirklich da?
Ja
ramses hat geschrieben:durch keinen anderen Prozess in Gebrauch?
doch, meist gleichzeitig mit anderen Arbeitsplätzen. Oft auch durch weitere EXE und Threads auf dem selben PC.

Re: oDacSession:GetLastError() nicht im ADS_LOG?

Verfasst: Di, 07. Mär 2017 22:52
von DelUser01
Hallo Joachim
nightcrawler hat geschrieben:Fehler der 5000er-Klasse sind Client-seitig. Der Server ist da nicht involviert, kann daher auch nicht loggen.
Das verstehe ich jetzt nicht - ADS ist do ein Client/Server-System bei dem der Client-Part mit dem Server-Part kommuniziert. Da gehe ich davon aus, dass wenn der Client eine Meldung bringt die da lautet
oDS:GetMessage: Error 5004: Either ACE could not find the specified file, or you do not have sufficient rights to access the file.
gehe ich davon aus, dass der Server-Part den Fehler meldet und damit auch protokollieren kann.

Re: oDacSession:GetLastError() nicht im ADS_LOG?

Verfasst: Di, 07. Mär 2017 22:58
von DelUser01
Hallo Carlo

AX_RightsCheck(.F.) habe ich heute erst heute eingebaut und in den Live-Betrieb geschickt. Wir werden sehen...

Re: oDacSession:GetLastError() nicht im ADS_LOG?

Verfasst: Di, 07. Mär 2017 23:36
von nightcrawler
Roland Gentner hat geschrieben:oDS:GetMessage: Error 5004: Either ACE could not find the specified file, or you do not have sufficient rights to access the file.

ACE = Advantage Client Engine
es kann eben schon in der Client Bibliothek Fehler geben, bevor irgendwas Richtung Server passiert. In diesem Fall überprüft die Client Engine, ob sie (im Kontext des Anwendungsprogramms) Berechtigungen auf die Datei im Dateisystem hat. Falls nicht, braucht sie den Server ja erst gar nicht zu suchen und bemühen.