ADS: sp_mgGetUserTables() bei gleichen Benutzernamen
Moderator: Moderatoren
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9459
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 374 Mal
- Kontaktdaten:
ADS: sp_mgGetUserTables() bei gleichen Benutzernamen
Huhu.
In einer Topologie, die (u.a.) auf einem Terminal Server läuft, haben alle Nutzer, die sich auf den ADS verbinden, unter den meisten Installationsumständen den gleichen Nutzernamen. Wenn man mit sp_mgGetConnectedUsers() weitere Informationen hierzu abruft, bekommt man z.B. den tatsächlichen Benutzernamen, mit dem die Windows-Anmeldung erfolgt ist, außerdem die IP und noch ein paar Infos. Leider ist zumindest bei mir die "ConnNumber" immer und in allen Fällen 0 (Null), und das ist leider auch die einzige andere Möglichkeit, über sp_mgGetUserTables() herauszufinden, wer welche Tabellen geöffnet hält. Also: Ich habe "TERMINAL SERVER USER" dreimal als ADS-Benutzer, und alle drei haben Connection Number 0. Ich sehe zwar drei unterschiedliche Verbindungen, aber über sp_mgGetUserTables() mit "TERMINAL SERVER USER" bekomme ich immer dieselben Tabellen - nämlich die, die alle drei Benutzer geöffnet haben. Alternativ mit der Connection Number (0) ist es dasselbe.
Jemand eine Idee dazu?
In einer Topologie, die (u.a.) auf einem Terminal Server läuft, haben alle Nutzer, die sich auf den ADS verbinden, unter den meisten Installationsumständen den gleichen Nutzernamen. Wenn man mit sp_mgGetConnectedUsers() weitere Informationen hierzu abruft, bekommt man z.B. den tatsächlichen Benutzernamen, mit dem die Windows-Anmeldung erfolgt ist, außerdem die IP und noch ein paar Infos. Leider ist zumindest bei mir die "ConnNumber" immer und in allen Fällen 0 (Null), und das ist leider auch die einzige andere Möglichkeit, über sp_mgGetUserTables() herauszufinden, wer welche Tabellen geöffnet hält. Also: Ich habe "TERMINAL SERVER USER" dreimal als ADS-Benutzer, und alle drei haben Connection Number 0. Ich sehe zwar drei unterschiedliche Verbindungen, aber über sp_mgGetUserTables() mit "TERMINAL SERVER USER" bekomme ich immer dieselben Tabellen - nämlich die, die alle drei Benutzer geöffnet haben. Alternativ mit der Connection Number (0) ist es dasselbe.
Jemand eine Idee dazu?
Herzlich,
Tom
Tom
- Marcus Herz
- 1000 working lines a day
- Beiträge: 878
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 40 Mal
- Danksagung erhalten: 202 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetUserTables() bei gleichen Benutzernamen
Das Feld TSAddress ist eigentlich genau dafür da. Hab nur keinen Terminalserver um das zu verifizieren.
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: 9459
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 374 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetUserTables() bei gleichen Benutzernamen
Ja, TSAddress wechselt (es enthält Infos wie "IPC Connection <n>", wobei "n" tatsächlich eine iterierende Verbindungsnummer zu sein scheint), aber ich kann es nicht als Abrufparameter für sp_mgGetUserTables() verwenden. Das kennt, wenn ich das richtig sehe, nur UserName und ConnNumber, und die sind für alle TS-User in dieser Situation gleich.
Herzlich,
Tom
Tom
- Marcus Herz
- 1000 working lines a day
- Beiträge: 878
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 40 Mal
- Danksagung erhalten: 202 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetUserTables() bei gleichen Benutzernamen
Das scheint nicht vorgesehen zu sein, über eine IP ADresse die geöffneten Tabelle abzufragen.
Ein Workaround könnte sein:
sp_mgGetAllTables => alle geöffneten Tabellen ermitteln, und dann je Tabelle
sp_mgGetTableUsers abfragen, hier kommt die TSAddress wieder ins Spiel
Ein Workaround könnte sein:
sp_mgGetAllTables => alle geöffneten Tabellen ermitteln, und dann je Tabelle
sp_mgGetTableUsers abfragen, hier kommt die TSAddress wieder ins Spiel
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: 9459
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 374 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetUserTables() bei gleichen Benutzernamen
Hallo, Marcus.
Ja, das ist der Weg. sp_mgGetTableUsers() liefert u.a. TSAddress und OSLoginUserName zu jeder Tabelle mit, und damit liegt die benötigte Information vor, wenn ich rückwärts gehe. Danke!
Ja, das ist der Weg. sp_mgGetTableUsers() liefert u.a. TSAddress und OSLoginUserName zu jeder Tabelle mit, und damit liegt die benötigte Information vor, wenn ich rückwärts gehe. Danke!
Herzlich,
Tom
Tom
- Marcus Herz
- 1000 working lines a day
- Beiträge: 878
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 40 Mal
- Danksagung erhalten: 202 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetUserTables() bei gleichen Benutzernamen
um das abzuschliessenConnNumber (O)
NetWare connection number. (Deprecated)
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: 9459
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 374 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetUserTables() bei gleichen Benutzernamen
Danke für den Hinweis, flog gestern irgendwann auch an mir vorbei, aber in meiner gefühlten Erinnerung habe ich gelegentlich noch Connection Numbers > 0 gesehen, obwohl seit Jahrhunderten definitiv nirgendwo mehr NetWare im Einsatz ist.um das abzuschliessen
Die aufeinander aufbauende Nutzung der Stored Procedures funktioniert einwandfrei, allerdings stieß ich dann ziemlich schnell auf ADS Error 7216, was mir vorher, bei der direkten Nutzung der API-Funktionen nie passiert ist. Abhilfe schaffte es, mit sp_SetStatementLimit(0) die Anzahl der Statements je Connection vom Limit auf 50 zu befreien.
Danke nochmals!
Herzlich,
Tom
Tom
- Marcus Herz
- 1000 working lines a day
- Beiträge: 878
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 40 Mal
- Danksagung erhalten: 202 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetUserTables() bei gleichen Benutzernamen
Der Fehler 7216 macht mich stutzig. Ich kenn zwar deine Schleife nicht, aber bist du dir sicher, alle Handles wieder zu schliessen? Mehr als 50 aktive SQL Abfragen gleichzeitig je User?
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: 9459
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 374 Mal
- Kontaktdaten:
Re: ADS: sp_mgGetUserTables() bei gleichen Benutzernamen
Du könntest recht haben, da stimmt möglicherweise was nicht. Danke für den Hinweis.
Edit: Stimmt, es fehlte das Schließen des Statements. Auch die Anzahl der genutzten Workareas ist vorher explodiert, jetzt ist alles fein.
Edit: Stimmt, es fehlte das Schließen des Statements. Auch die Anzahl der genutzten Workareas ist vorher explodiert, jetzt ist alles fein.
Herzlich,
Tom
Tom