I need to identify the user name of the current user from within a Stored Process. Is there a way of doing this?
Is &sysuserid what you are looking for?
Is &sysuserid what you are looking for?
Thanks great, thanks.
Hi Seer,
There are a number of macro variables you can choose from to best suit your needs, but the values they have will depend on the way in which the stored process is configured, the configuration of the server it will run on, and the person who has logged in to run it. Generally speaking in a stored process you are probably interested in &_METAUSER or &_METAPERSON which will resolve to the userid and name of the person who logged in to run the stored process. On the other hand &SYSUSERID will be the userid for the SAS process owner which may or not be the person who is running the stored process. To give you some examples, I have the following stored process code which will show me the various identity values:
data test;
sysuserid="&sysuserid";
metauser="&_metauser";
metaperson="&_metaperson";
run;
proc print;
run;
If I create a stored process with this code and configure it to I run on my "SASApp - Logical Stored Process Server" then I get the following output when it is run:
sysuserid metauser metaperson
---------------------------------
sassrv paul Paul Homes
If I then modify it to run on my "SASApp - Logical Workspace Server" I will get the following output when it is run:
sysuserid metauser metaperson
---------------------------------
paul paul Paul Homes
Notice that &SYSUSERID is different. That's because my "SASApp - Logical Workspace Server" is configured to launch and run the underlying SAS process on-demand as the requesting user, but my "SASApp - Logical Stored Process Server" is configured to pre-launch SAS processes with a fixed set of launch credentials (the sassrv account often used to run SAS stored process and pooled workspace servers). This is a common configuration. In some situations it is also possible and/or necessary to configure a standard workspace server to use a specific set of launch credentials too so I wouldn't rely on this behaviour unless you talk to you platform administrator first.
I would suggest that whilst it may be possible to use &SYSUSERID in some situations you might be better of using &_METAUSER or &_METAPERSON if you want the identity of the person who logged in to the SAS platform to run the stored process. I would only use &SYSUSERID when you want the identity of the account used to run the SAS operating system process regardless of who logged into SAS to run the stored process.
There is more information on the special _METAUSER and _METAPERSON macro variables in the SAS® 9.2 Stored Processes: Developer's Guide under Writing a Stored Process and Using Reserved Macro Variables (http://support.sas.com/documentation/cdl/en/stpug/61271/HTML/default/viewer.htm#a003152603.htm)
Cheers
Paul
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.
Find more tutorials on the SAS Users YouTube channel.