Seite 1 von 1

Zugriff auf die repqueue.adt

Verfasst: Mo, 10. Jan 2022 1:15
von Werner_Bayern
Servus,

Anfängerfrage: Wir haben 2 ADS Replikationsserver und jetzt geht's um die Auswertung der Queue, falls Fehler auftreten. Dann stoppt ja die Abarbeitung der Replikation. Wir arbeiten mit einem Datadictionary, dort ist die __subName auch automatisch enthalten. Mittels des Data Architecten kann diese auch geöffnet werden, per Xbase++ schaffe ich das nicht.

Ich möchte per SQL drauf zugreifen, bekomme aber bei:

Code: Alles auswählen

query("select * from repqueue where not empty(ErrorCode) order by EntryID desc"
die Fehlermeldung, dass ich diese nicht als free table öffnen kann...

Bei

Code: Alles auswählen

query("select * from __subName where not empty(ErrorCode) order by EntryID desc"
die Fehlermeldung:

Code: Alles auswählen

Xbase++ Version     : Xbase++ (R) Version 2.00.1542
default DBE         : ADSDBE
------------------------------------------------------------------------------------------
oError:args         :
          -> VALTYPE: L VALUE: .T.
          -> VALTYPE: O CLASS: dacSession
          -> VALTYPE: C VALUE: <CURSOR> ¤q</CURSOR>
          -> VALTYPE: C VALUE: queue
oError:canDefault   : J
oError:canRetry     : J
oError:canSubstitute: N
oError:cargo        : NIL
oError:description  : Datei kann nicht erzeugt werden
oError:filename     : 
oError:genCode      :         70
oError:operation    : DbUseArea
oError:osCode       :          0
oError:severity     :          2
oError:subCode      :       8031
oError:subSystem    : BASE
oError:thread       :          3
oError:tries        :          1
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von ADSSQLSTATEMENT:QUERY(288)
Aufgerufen von ADSSQL:QUERY(2515)
Aufgerufen von CHECKREPQUEUE(1505)
Es muss irgendwas mit dem ADT-Format zu tun haben, da wir im DD ansonsten dbfntx haben, obwohl dort bei TableType adt eingetragen ist...

Re: Zugriff auf die repqueue.adt

Verfasst: Mo, 10. Jan 2022 8:23
von Marcus Herz

Code: Alles auswählen

query("select * from repqueue where not empty(ErrorCode) order by EntryID desc"
da hast du dich wohl vertippt: repqueue -> __subname.
Probier mal einen alias:

Code: Alles auswählen

query("select * from __subName subname where not empty(ErrorCode) order by EntryID desc"
vielleicht hat ja Alaska mit dem doppelten __ ein Problem.
- Kann man die gleiche DacSession für 2 Dateitypen NTX/ADT konfigurieren? Bin ich mir nicht sicher.

Re: Zugriff auf die repqueue.adt

Verfasst: Mo, 10. Jan 2022 9:35
von nightcrawler
Hallo Marcus,
man sollte DBFNTX, DBFCDX und ADSADT komplett durchmischen können, da vom ADS bei allen ADD-gebundenen intern quasi ADT angenommen wird;)

Re: Zugriff auf die repqueue.adt

Verfasst: Mo, 10. Jan 2022 15:31
von Werner_Bayern
Servus Marcus,

repqueue war nur ein Test, hab ja beide Beispiele gepostet.

Leider hilft auch Dein Tipp mit dem Alias nichts, gleiche Fehlermeldung.

Re: Zugriff auf die repqueue.adt

Verfasst: Di, 11. Jan 2022 12:46
von nightcrawler
schau mal in die ads_err, ob der Fehler drt mit geloggt wird. Daraus kannst du zB den genauen Tabellennamen mit Endung und Pfad erkennen.

Re: Zugriff auf die repqueue.adt

Verfasst: Di, 11. Jan 2022 13:37
von Werner_Bayern
Servus Joachim,

nein, da wird nichts diesbezüglich protokolliert, was ich auch nachvollziehen kann: Es ist ja auch eine Xbase++ - Fehlernummer, vermutlich macht hier der ADS brav seinen Job.

Bekomme aber mit einem anderen DD (anderer Datenbestand) in diesem Zusammenhang den Fehler 7074, was will der mir sagen?
Error 7074: The table ID stored in the Advantage Data Dictionary file does no match the ID of the table being opened.

Re: Zugriff auf die repqueue.adt

Verfasst: Mi, 12. Jan 2022 11:03
von nightcrawler
Hallo Werner,
Du hast ein Dictionary und diesem eine (ADT)-Tabelle untergeschoben, welche nicht mit diesem Data Dictionary erzeugt wurde. ADS führt bei ADT Tabellen hier die ID des Dictionaries mit, damit die Struktur auf jeden Fall passt.

Re: Zugriff auf die repqueue.adt

Verfasst: Mi, 12. Jan 2022 16:05
von Werner_Bayern
Servus Joachim,

danke, hab den Datenbestand komplett gelöscht, ja, da stimmte wohl was mit der __SUB (view auf repqueue.adt) nicht mehr. Bleibt das Problem des Zugriffs per SQL...

Re: Zugriff auf die repqueue.adt

Verfasst: Mi, 12. Jan 2022 16:35
von Marcus Herz

Code: Alles auswählen

DbeInfo( COMPONENT_DATA , ADSDBE_TBL_MODE, ADSDBE_ADT )
DbeInfo( COMPONENT_ORDER, ADSDBE_TBL_MODE, ADSDBE_ADT )
Hat das nicht geholfen?

Re: Zugriff auf die repqueue.adt

Verfasst: Mi, 12. Jan 2022 16:43
von Werner_Bayern
näh, Datei kann nicht erzeugt werden...

Andere Dateien aus dem DD kann ich problemlos über ein SQL-Query auslesen...

Habs an Alaska gemeldet.

Re: Zugriff auf die repqueue.adt

Verfasst: Sa, 15. Jan 2022 12:10
von nightcrawler
Hallo Werner,
falls Xbase++ hier Schwierigkeiten mit den Dateinamen macht kannst Du zur Not immer noch eine View erstellen:

Code: Alles auswählen

CREATE VIEW WernersRepQueue AS SELECT * FROM __subname

Re: Zugriff auf die repqueue.adt

Verfasst: Sa, 15. Jan 2022 17:44
von Werner_Bayern
Servus Joachim,

danke, einen ähnlichen Tipp hat mir schon Marcus mit "as" gegeben.

Immerhin bekomme ich hier einen ADS-Fehler:
Error 7200: AQE Error: State = HY000; NativeError = 5054; [SAP][Advantage SQL Engine][ASA] Error 5054: The command cannot be completed with the current user permissions. Cannot create view object in the data dictionary
Also habe ich in den connect-String noch die UID aufgenommen. Dann kommt ein neuer Xbase++-Fehler:
Xbase++ Version : Xbase++ (R) Version 2.00.1542
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: L VALUE: .T.
-> VALTYPE: O CLASS: dacSession
-> VALTYPE: C VALUE: <CURSOR> </CURSOR>
-> VALTYPE: C VALUE: QUERY
oError:canDefault : J
oError:canRetry : J
oError:canSubstitute: N
oError:cargo : {NIL, 5120, Error 5120: The function is no longer available.}
oError:description :
oError:filename :
oError:genCode : 8999
oError:operation : DbUseArea
oError:osCode : 0
oError:severity : 2
oError:subCode : 5381
oError:subSystem : BASE
oError:thread : 1
oError:tries : 1
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von ADSSQLSTATEMENT:QUERY(288)

Re: Zugriff auf die repqueue.adt

Verfasst: Sa, 15. Jan 2022 18:39
von nightcrawler
Hallo Werner,
gehe in das Dictionary direkt über ADSSYS und lege dort die View an. Dann kannst Du in Xbase++ darauf zugreifen wie auf eine Tabelle.

Re: Zugriff auf die repqueue.adt

Verfasst: Sa, 15. Jan 2022 18:39
von Marcus Herz

Code: Alles auswählen

CREATE VIEW WernersRepQueue AS SELECT * FROM __subname
Das musst du im ARC als ADSSYS ausführen.
In Xbase dann

Code: Alles auswählen

query("select * from WernersRepQueue where not empty(ErrorCode) order by EntryID desc"

Re: Zugriff auf die repqueue.adt

Verfasst: Sa, 15. Jan 2022 23:16
von Werner_Bayern
Servus,

die View kann ich anlegen, aber dann wieder gleicher Fehler beim select auf die View: Datei kann nicht erzeugt werden.

Es ist sicher ein Fehler in Xbase++. Alaska hat sich aber leider diesbezüglich noch nicht gemeldet, aber schon mal einen anderen Fehler beim Zugriff auf den ADS bestätigt: http://www.alaska-software.com/scripts/ ... PDRID=7464