05-08-2013 03:32 PM
I need to obtain the user id and if possible the user name and e-mail address of the user who is running a job in Enterprise Guide via a workspace server.
At this time, I am considering using proc metaoperate or a call to the macros dictionary table. Do I have anyother options and what is the recommended best practice?
05-08-2013 04:24 PM
For any SAS EG session you can do this:
length name $ 16 purpose $ 40;
label name="Value Name" purpose="Purpose";
infile datalines dsd;
input name purpose;
SYSUSERID, SAS session host account
_CLIENTUSERID, Windows user ID in SAS EG
_CLIENTUSERNAME, Windows user name in SAS EG
_METAUSER, SAS metadata user ID
from work.ids t1
inner join sashelp.vmacro t2 on (t1.name = t2.name);
You can also query SAS metadata like so:
options metaserver=sasmetadata metauser="sasadm@saspw" metapass="password";
This gives you all users and their details defined in the SAS metadata - do you want a snapshot of all EG users who are currently connecting to a SAS workspace server, or just all users who are defined in metadata?
05-08-2013 10:12 PM
You could encrypt it then:
proc pwencode in='password';
Then paste the output from the procedure into your metapass string. This does not stop anyone using the encrypted password in code but would prevent them using it in a user tool like SAS Management Console.
05-09-2013 08:24 AM
If you are using SAS Enterprise Guide and querying metadata "as you", you don't need the META* options (including the password). But if you are needing to use a different identity (such as sasadm@saspw), then you do need it. See this article:
05-09-2013 04:02 PM
That's an excellent tip Chris!
%mduextr(libref=work); works fine without the metadata credentials when run in EG. I had just assumed credentials were required because it was in an example on SAS Support.