Remote Server Info [ERLEDIGT]

Advantage Database Server

Moderator: Moderatoren

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Remote Server Info [ERLEDIGT]

Beitrag von Manfred »

Hi,
ich stehe wieder vor einem Rätsel. Ich habe den Architekten geöffnet und schaue mir Open Files an. Wenn ich einen SELECT Befehl aufgebe, dann wird mir die DBF Tabelle angezeigt, auf die der SELECT Befehl gemacht wurde. Sie steht als geöffnet dort. Unter Xbase habe ich in dem Moment eine "temporäre" DBF im Speicher, die ich danach mit DbCloseArea() wieder schließe. Workspacelist() ergibt leer zurück. In Open Files bleibt die DBF aber offen. Sie wird anscheinend erst wieder geschlossen, wenn ich die Connection zum ADS löse. Was zur Folge hat, das sich die Open Files Liste immer mehr vergrößert. Ist das richtig so?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Remote Server Info

Beitrag von Marcus Herz »

Hatte ich dir doch am Telefon erläutert:
ADS hält sich bei SQL die letzten 20 Tabellen gecacht, sprich intern weiterhin geöffnet. Aus Performance Gründen.
Erst der API Befehl AdsCloseCachedTables() schliesst diese.
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Remote Server Info

Beitrag von Manfred »

ok,
das bedeutet also, wenn reger Verkehr stattfindet (in meinem Fall ein Webserver) dann können es schon mehrere 100 bleiben, die da offen sind?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Remote Server Info

Beitrag von Marcus Herz »

Nein , die Voreinstellung ist 20 (glaub ich). Für den ganzen Server
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Remote Server Info

Beitrag von Manfred »

dann läuft hier was ganz falsch. Es sind seitenweise offene Tabellen zu sehen
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Remote Server Info

Beitrag von Manfred »

ich werde das morgen nochmal in aller Ruhe prüfen. Vielleicht habe ich auch heute die falsche Brille auf?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Remote Server Info

Beitrag von Marcus Herz »

Also, ich hab nochmal nachgelesen:
Es wird unterschieden zwischen CacheOpenTables und CacheOpenCursors

CacheOpenTables , Voreinstellung = 0, das heisst, es wird nichts gecacht. Trifft zu für use Befehle.
CacheOpenCursors, Voreinstellung = 25, trifft für select .... zu.

Soweit ich mich entsinne, verwendest du ein Select, also trifft zweites zu.
Allerdings, und das ist für mich auch neu:
Wenn du dein Select mit ; abschliesst, wird auch der Cache geschlossen. Vielleicht hilft dir das weiter.
SQL statement terminated with a semicolon will force the application to close all cache closed cursors
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Remote Server Info

Beitrag von Manfred »

also womit Du auf jeden FAll recht hast ist, das alle DBF die über USE geöffnet wurden bei einem DbCloseArea() auch aus der Liste verschwinden.
ein ";" am Ende hat nicht das Ergebnis geliefert, was ich jetzt erwartet habe. Sie bleiben offen in der Liste stehen.
So weit erstmal von meiner Baustelle.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Remote Server Info

Beitrag von Marcus Herz »

Für mich ist da jetzt auch neu. Muss ich selber morgen überprüfen
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Remote Server Info

Beitrag von Manfred »

OK, KOmmando zurück.
Gestern habe ich wohl etwas geschielt. Es geht um den Reiter Connected Users Die untere Liste Lock Open Tables File Name, die ist voll und füllt sich unaufhörlich. Ist das denn so korrekt?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Remote Server Info

Beitrag von Marcus Herz »

Also, ich habs bei mir nochmal getestet:
Nach einem SQL bleiben die Tabellen des Selects als geöffnet in dem "Lock- Open Tables" Register sichtbar, bis ich den Cache mit
AdsCloseCachedTables() lösche, dann sind aber alle weg. Und es sind nie mehr als 20 - meine Einstellungen, Default ist 25
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Remote Server Info

Beitrag von Manfred »

wieviel sind es in der Grundeinstellung und wo kann ich das nachschauen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Remote Server Info

Beitrag von Manfred »

Ist das jetzt ein reines ADS Problem, oder eines von Xbase++? Könnte das Schuld daran sein, das der Speicherverbrauch und die handles des Programms mit der Zeit rasant ansteigen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Remote Server Info

Beitrag von Marcus Herz »

das war ein reines API Programm, also ohne ADSDBE

In der Hilfe steht nichts, dass es ein Destroy auf DacSqlStatement gibt.
Deklariere mal die
EXTERN LONG ADSCLOSECACHEDTABLES(nHandle AS LONG) IN ACE32.DLL

und ruf nach jedem dbclosearea (Session ist deine Connection)

ADSCLOSECACHEDTABLES(Session:getConnectionHandle())

sollte so funktionieren, ungetestet. Dann dürfen keine offenen Tabelle mehr da sein.
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Remote Server Info

Beitrag von Manfred »

bevor ich mich da jetzt reinknie noch eine Frage: Schließe ich dann alle? Das ist ein Webserver auf dem parallele Zugriffe stattfinden. Hauen die dann nicht was kaputt, oder bremsen was aus?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Remote Server Info

Beitrag von Marcus Herz »

nein, das wird nur der interne cache geleert, Tabellen, die regulär geöffnet und verwendet werden, bleiben unberührt
ist ja auch nur zum Test, bzw. Fehlereingrenzung vorerst
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Remote Server Info

Beitrag von Manfred »

Hi Marcus,
geklappt hat es bisher nicht. Es kommen jetzt immer neue Dinge ans Licht. Ist aber noch alles in der Testphase. Bin mal gespannt, was da wieder für ein Futtsack zum Vorschein kommt, egal, woher der nun kommt. :roll:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: Remote Server Info

Beitrag von Bertram Hansen »

Hallo zusammen,

jetzt schildere ich mal meine bisherigen ADS Anfänger Erfahrungen.

Es geht um die Anzeige im Advatage Data Architect unter Remote Server Info im Tabreiter Connected User unter Open Table.
Trotz DbCloseArea() sieht man unter dem Advatage Data Architect unter Remote Server Info im Tabreiter Connected User unter Open Table diese Tabelle immer, wenn diese mit DacSqlStatement(() geöffnet wird.

Code: Alles auswählen

IF !Dbeload( "ADSDBE", .F. )
    DgMeldebox({"ADSDBE wurde nicht geladen"}, "Hinweis")
ENDIF

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( "ADSDBE" )

cConnect := "DBE=ADSDBE;"
cConnect += "SERVER=\\192.168.1.82:6262\C$\project\TestADS\db\ADSTest.add;"
cConnect += "ADS_REMOTE_SERVER" + ";"
cConnect += "UID=adssys;"
cConnect += "PWD="
  
cDbe := "ADSDBE"

oSession := DacSession():New( cConnect )
IF .NOT. oSession:isConnected()
    DgMeldebox({"Die Connection zur Datenbank konnte nicht hergestellt werden",;
                        "Fehlercode  :" +STR(oSession:getLastError()),;
                        "Beschreibung:" +oSession:getLastMessage()}, "Hinweis")
    RETURN
ENDIF

TEXT INTO cStatement WRAP CHr(13) TRIMMED
     SELECT * FROM sdkunde order by kdkdnr
ENDTEXT

// Schleife mit SELECT und DacSqlStatement
FOR I := 1 TO 3
       oStmt  := DacSqlStatement( oSession ):fromChar( cStatement )
       cAlias := oStmt:Build():Query()
       dbselectarea(cAlias)
       (cAlias)->(DBGOTOP())
       (cAlias)->(DBCLOSEAREA())    // -->> trotz DbCloseArea() sieht man unter dem Advatage Data Architect unter Remote Server Info im Tabreiter Connected User unter Open Table diese Tabelle immer noch!!! 
NEXT

// Schleife mit DbUseArea()
SET PATH TO "c:\project\TestAds\db"
FOR i := 1 TO 3
       DbUseArea(.T., cDbe, "sdleer.dbf", "sdleer", .T.)
       sdleer->(DBCLOSEAREA())   // -->> Hier siehr man nach einem DbCloseArea() im Advatage Data Architect unter Remote Server Info im Tabreiter Connected User unter Open Table diese Tabelle nicht mehr 
NEXT

oSession:disconnect()      
Auch die Idee mit dem ADSCLOSECACHEDTABLES(Session:getConnectionHandle()) nach dem DbCloseArea() zeigt KEINE Wirkung.

Habe ich hier irgendwo ein Denkfehler oder grundsätzlich etwas falsch realisiert?
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Remote Server Info

Beitrag von Marcus Herz »

Es scheint, als fehlt ein,

Code: Alles auswählen

DacSqlStatement:destroy()
oder ähnliches. Steht aber nichts dazu in der Doku. Ist an der Zeit, mal Alaska zu fragen
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Remote Server Info

Beitrag von ramses »

Hallo Manfred

Wenn du ja jetzt noch am Anfang deines Projekts stehst: Hast du dir mal in Ruhe überlegt ob du nicht besser gleich PostgreSQL verwenden solltest?

Wer weiss schon wie es mit ADS weitergeht?
Zudem ist PG Open-Source und wird aktiv gepflegt und erweitert .....
Valar Morghulis

Gruss Carlo
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: Remote Server Info

Beitrag von Bertram Hansen »

Hallo Carlo,

ich antworte mal für Manfred, weil wir beide uns damit aktuell rumschlagen.
Es geht nicht darum ein anderes Tool einzusetzen, sondern darum warum das beim ADS nicht funktioniert. Nur darum!!!!!

Bist du dir sicher, dass es mit PostgreSQL keine Probleme gibt?
Kannst du mal ein wenig Code zeigen, wie du das mit DacSqlStatement() realisiert hast?
Zuletzt geändert von Bertram Hansen am Fr, 29. Mai 2020 13:02, insgesamt 1-mal geändert.
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: Remote Server Info

Beitrag von Bertram Hansen »

Hallo Marcus,

richtig, so etwas könnte helfen. Aber die Doku gibt nichts her.
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Remote Server Info

Beitrag von Manfred »

HI Carlo,
das hatte ich anfänglich genau so vor. Es ist ein bestehendes Projekt, was recht umfangreich ist. Aber leider fehlt mir im Moment die Zeit alles auf SQL umzustellen. Deshalb der ADS. Mit dem kann ich beides parallel laufen lassen (ohne Performanceverluste) und dann nach und nach auf SQL umstellen. PostGres ist auf jeden Fall derzeit mein Favorit für die Zukunft.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Remote Server Info

Beitrag von Manfred »

@Marcus,
ich habe das mal angefragt gerade.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Remote Server Info

Beitrag von Werner_Bayern »

Bertram Hansen hat geschrieben: Fr, 29. Mai 2020 12:59 Hallo Marcus,

richtig, so etwas könnte helfen. Aber die Doku gibt nichts her.
Auszug aus der Doku:
Connecting to the Advantage Database Server

#include "dac.ch"

PROCEDURE Main

LOCAL cConnect, oSession

// Ensure that ADS DatabaseEngine is loaded and
// set as the default dbe
IF !Dbeload( "ADSDBE", .F. )
Alert( "ADSDBE could not be loaded!" )
ENDIF
DbeSetDefault( "ADSDBE" )

/* Connect to server:lichtenstein and share:roy01 */
cConnect := "DBE=ADSDBE;SERVER=\\LICHTENSTEIN\ROY01"
oSession := DacSession():New( cConnect )

// Test for connection success
IF .NOT. oSession:isConnected()
? "Error code :", oSession:getLastError()
? "Description:", oSession:getLastMessage()
ELSE
? "Connection to server established."
ENDIF

// Your data access code goes here...

oSession:disconnect()

RETURN
Was fehlt Dir?
es grüßt

Werner

<when the music is over, turn off the lights!>
Antworten