ADS: sp_mgGetConnectedUsers u.a. auch ohne DD?
Moderator: Moderatoren
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
ADS: sp_mgGetConnectedUsers u.a. auch ohne DD?
Ich will die erweiterten Infos nutzen, die die hauseigene Stored Procedure "sp_mgGetConnectedUsers" liefert, arbeite aber nicht mit einem Data Dictionary. Geht das?
Herzlich,
Tom
Tom
- Marcus Herz
- 1000 working lines a day
- Beiträge: 860
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 197 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetConnectedUsers u.a. auch ohne DD?
Ja
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetConnectedUsers u.a. auch ohne DD?
Du hast dafür nicht zufällig ein Beispiel zur Hand?
Herzlich,
Tom
Tom
- Marcus Herz
- 1000 working lines a day
- Beiträge: 860
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 197 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetConnectedUsers u.a. auch ohne DD?
Code: Alles auswählen
Execute Procedere sp_mggetconnectedusers();
Das gibt dir einen cursor auf eine Tabelle zurück.
Das sollte auch mit der adsdbe funktionieren
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetConnectedUsers u.a. auch ohne DD?
Ich habe und hatte das auf allen möglichen Wegen versucht, aber es läuft immerzu auf einen Fehler, eigenartigerweise bei "DbUseArea". Ich habe das als SQL-Kommando, über USQL und zuletzt so versucht:oder wo liegt dein Problem?
Code: Alles auswählen
a := SqlExecSp("sp_mggetconnectedusers()",oSession,,.F.) // oSession ist die DAC-Session mit dem ADS
Es ist immer dasselbe: Ich bekomme einen 8999 (DbUseArea) in SQLEXECSP(158) (das ist die Funktion, auf die das Kommando EXECSP zeigt).
Herzlich,
Tom
Tom
- Marcus Herz
- 1000 working lines a day
- Beiträge: 860
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 197 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetConnectedUsers u.a. auch ohne DD?
ich schau mir das morgen mal m Büro an. Kann sein, ADSDBE untestützt das nicht. Aber damit kenne ich mich nicht mehr aus.
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
- Marcus Herz
- 1000 working lines a day
- Beiträge: 860
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 197 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetConnectedUsers u.a. auch ohne DD?
hast du mal:
probiert. Wenn auch nicht, verusuch mal:
Das muss funktionieren
Code: Alles auswählen
a := SqlExecSp("execute procedure sp_mggetconnectedusers()",oSession,,.F.) // oSession ist die DAC-Session mit dem ADS
Code: Alles auswählen
a := SqlExecSp("select * from ( execute procedure sp_mggetconnectedusers())",oSession,,.F.) // oSession ist die DAC-Session mit dem ADS
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
- nightcrawler
- 1000 working lines a day
- Beiträge: 653
- Registriert: Di, 24. Apr 2012 16:33
- Wohnort: 72184 Weitingen
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 96 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetConnectedUsers u.a. auch ohne DD?
wie Markus geschrieben hat: ein "execute procedure" davor. ADS kennt die Microsoft-Abkürzung nicht.Tom hat geschrieben: ↑So, 12. Nov 2023 14:50Code: Alles auswählen
a := SqlExecSp("sp_mggetconnectedusers()",oSession,,.F.) // oSession ist die DAC-Session mit dem ADS
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetConnectedUsers u.a. auch ohne DD?
Das funktioniert beides nicht, und vor allem bei der Variante mit "SELECT * FROM" hätte mich das auch gewundert, denn SqlExecSp() ist ja explizit (daher auch der Name) für das Ausführen einer Stored Procedure gedacht, nicht für die handelsüblichen SQL-Statements wie SELECT, INSERT, UPDATE usw.
Aber ganz egal, welche Syntax ich im Statement selbst verwende, ich erhalte immer diesen Fehler, und zwar in der Xbase++-Funktion "SqlExecSp()": Und, wie gesagt - ich verwende kein Data Dictionary. Ich habe nur eine ganz normale DAC-Session mit dem ADS, und nutze ansonsten die ADSDBE.
Aber ganz egal, welche Syntax ich im Statement selbst verwende, ich erhalte immer diesen Fehler, und zwar in der Xbase++-Funktion "SqlExecSp()": Und, wie gesagt - ich verwende kein Data Dictionary. Ich habe nur eine ganz normale DAC-Session mit dem ADS, und nutze ansonsten die ADSDBE.
Herzlich,
Tom
Tom
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetConnectedUsers u.a. auch ohne DD?
Dasselbe mit SqlGetResult (Statment "SELECT * FROM ( EXECUTE ..."), wieder ein 8999/DbUseArea, dieses Mal in SqlStmtExec.
Kann das an der ADS-Version liegen? Gibt's da ein Minimum?
Kann das an der ADS-Version liegen? Gibt's da ein Minimum?
Herzlich,
Tom
Tom
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetConnectedUsers u.a. auch ohne DD?
SqlCmd() immerhin erzeugt keinen Fehler, retourniert aber .F.
Herzlich,
Tom
Tom
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetConnectedUsers u.a. auch ohne DD?
Okay, Lösung gefunden. Ich erkläre später, worin sie bestand. Danke!
Herzlich,
Tom
Tom
- Marcus Herz
- 1000 working lines a day
- Beiträge: 860
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 197 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetConnectedUsers u.a. auch ohne DD?
Komisch, ich fin die Funktion SqlExecSP gar nicht. Auch in keinem Header File oder Doku!?!
Ich habe noch einiges probiert. Alles schlägt fehl. Das ist aber ein Problem der ADSDBE
z.B.
PS: da haben sich 2 Antworten zeitlich überschnitten
Ich habe noch einiges probiert. Alles schlägt fehl. Das ist aber ein Problem der ADSDBE
z.B.
Code: Alles auswählen
DbeInfo( COMPONENT_DATA , ADSDBE_TBL_MODE, ADSDBE_ADT )
DbeInfo( COMPONENT_ORDER, ADSDBE_TBL_MODE, ADSDBE_ADT )
DbeInfo( COMPONENT_DATA, ADSDBE_FREETABLE, .T. )
oStmt1 := DacSqlStatement(oSession):fromChar("execute procedure sp_mggetconnectedusers()")
oStmt1:build()
oStmt1:query(USQL_RESULT_WORKAREA, "SP")
// oder
use ("select * from (execute procedure sp_mggetconnectedusers()) x") alias sp via (oSession)
PS: da haben sich 2 Antworten zeitlich überschnitten
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetConnectedUsers u.a. auch ohne DD?
Hallo, Marcus.
Ich habe die Funktion in der SQLCMD.CH gefunden. Sie wird angesprochen, wenn man das Kommando "EXECSP" verwendet.
Ich versuche noch, herauszufinden, warum es funktioniert. Ich habe schlussendlich eine Funktion verwendet, die Roger Donnay geschrieben und hier auch schon dokumentiert hat. Sie verwendet eine eigene Funktion "DC_AdsSqlStatement()", um mit einem ADS SQL zu quatschen, und diese wiederum verwendet eine eigene Klasse "DC_AdsStatement", die immer zwei Verbindungen zu einem ADS herstellt, eine Standard- und eine Dictionary-Verbindung, ganz unabhängig davon, ob man ein Dictionary verwendet oder nicht. Über DC_AdsSqlStatement lässt sich das EXEC PROC ... absetzen und antwortet mit einem Array von DataObjects. Roger umgeht da wohl einige Schwächen, die noch im USQL bzw. PTSQL stecken.
Ich habe die Funktion in der SQLCMD.CH gefunden. Sie wird angesprochen, wenn man das Kommando "EXECSP" verwendet.
Ich versuche noch, herauszufinden, warum es funktioniert. Ich habe schlussendlich eine Funktion verwendet, die Roger Donnay geschrieben und hier auch schon dokumentiert hat. Sie verwendet eine eigene Funktion "DC_AdsSqlStatement()", um mit einem ADS SQL zu quatschen, und diese wiederum verwendet eine eigene Klasse "DC_AdsStatement", die immer zwei Verbindungen zu einem ADS herstellt, eine Standard- und eine Dictionary-Verbindung, ganz unabhängig davon, ob man ein Dictionary verwendet oder nicht. Über DC_AdsSqlStatement lässt sich das EXEC PROC ... absetzen und antwortet mit einem Array von DataObjects. Roger umgeht da wohl einige Schwächen, die noch im USQL bzw. PTSQL stecken.
Herzlich,
Tom
Tom
- Marcus Herz
- 1000 working lines a day
- Beiträge: 860
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 197 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetConnectedUsers u.a. auch ohne DD?
in der sqlcmd.ch hab ich die auch gefunden, aber da wird am Anfang die odbcdbe.cd includiert. Denke, die Funktion ist wohl eher für diese DBE gedacht.
// Inhalt:
// Kommando-basiertes Nutzen von SQL via ODBCDBE in Xbase++
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetConnectedUsers u.a. auch ohne DD?
Hallo, Marcus.
Aber - verwendet Ihr sp_mgGetConnectedUsers irgendwo? Und wenn ja, wie macht Ihr das?
Das ist möglich. Beim SQL-Kommando ist es in der Hilfe auch explizit erwähnt, während sich EXECSP bei "Executing Stored Procedures" findet, das auch im ODBC-Kontext steht.Denke, die Funktion ist wohl eher für diese DBE gedacht.
Aber - verwendet Ihr sp_mgGetConnectedUsers irgendwo? Und wenn ja, wie macht Ihr das?
Herzlich,
Tom
Tom
- Marcus Herz
- 1000 working lines a day
- Beiträge: 860
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 197 Mal
- Kontaktdaten:
enddo
Ich hab ja AdsClass++, das rein auf der API basiert. Da hab ich all die Probleme nicht.
Ich kann das dann so abfragen:
Ich kann das dann so abfragen:
Code: Alles auswählen
dbUser := AppDic():OpenSelect("execute procedure sp_mgGetConnectedUsers()") // Appdic() ist das Connection Objekt
// un dann kann ich darüber skippen
do while !dbUser:eof()
dbUser:skip()
enddo
dbUser:close()
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.