Consultor Eletrônico



Kbase P14172: Promon Proshut shows blank user id information
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   12/9/2009
Status: Verified

SYMPTOM(s):

Promon Proshut shows blank user id information

User names don't appear for remote connections in promon

User account name is blank

The list of user's that are displayed are missing the "user_id" information for REMC and CON client connections when executing '_mprshut' command.

The user id field is blank in the list of connected users when disconnecting a user with "proshut dbname".

When viewing a list of users through promon, all REMC and SELF Type client connections are missing entries in the NAME field

FACT(s) (Environment):

All other information for client connections is visible.
The database log file is recording the OS user_id for remote client login
NOT using -H -S for the proshut
All Supported Operating Systems
Progress/OpenEdge Versions

CHANGE:

Added ODBC interface to application.

CAUSE:

DATABASE SECURITY has been initiated for the ODBC interface. Only one user was added to the _user table to facilitate the SQL connect. Application Users are allowed to log into the database without user id's and that is why their user names are showing up as blanks.

FIX:

When NO database security is set, then Progress uses the O/S userid. As soon as database security is initialized, the mode is changed and we use the entries in the _user table. So, if a blank userid is allowed to be used to access the database, a blank userid is shown.

Adding users to the Database Security for EACH database that can be connected to can be high maintenance, but is the only way to get their username in promon or VST tables if you are relying on finding the user name. These users could be created on one database and then a dump of the completed _user table through the
Database Administration Tool:
Admin -> Dump Data and Definitions -> User Table Contents
followed by a load of this _user.d into every appropriate database in the same fashion, to keep these database access user tables in synch:
Admin -> Load Data and Definitions -> User Table Contents.

Matching the user number to the remote host for the remote client (_CONNECT._CONNECT-Device) for disconnection is an alternative means although requires some triangulation. Note, the PID on the remote client's machine will also match the PID shown in the listing. These can be observed in the 'proshut' and 'promon, user control sessions.

Below is an example using VST's instead:

STEP 1:

For each _CONNECT where _CONNECT._CONNECT-USR >= 0:

DISPLAY _CONNECT._CONNECT-USR LABEL "User_ID"
_CONNECT._CONNECT-Name LABEL "Name"
SUBSTRING (_CONNECT._CONNECT-Time,12,8) LABEL "Connected at"
_CONNECT._CONNECT-Pid LABEL "PID"
_CONNECT._CONNECT-Type LABEL "Conn_Type"
_CONNECT._CONNECT-Device LABEL "REM_host"
_CONNECT._CONNECT-Server label "REM SVR#" WITH SIZE 256 BY 20 DOWN.
End.


STEP 2:

The _CONNECT will *still not* give the user-id (aka: user name). You will now need to match the user number to the remote host by the remote client (_CONNECT._CONNECT-Device) to find the user number that you want to disconnect through promon.

OR: ensure that every connected user has an entry in the _user table and is obliged to use it to access the application by not allowing access to the database without a valid userid password in the Database Admin Tool -> Admin -> Security -> Disallow Blank Userid Access.