For a SAS dataset, what is the best way to prevent blocking for multiple user access

Thanks for reading this.

I use the shared service (server = sharedLib) when setting up libref to allow users of my SAS / IntrNet application to modify and update (add new) records in one dataset. The application will also be used to query my dataset. To minimize locking, I use only the data step to modify and update, not Proc SQL (which locks the entire item). However, I am wondering if a lock is more or less likely if only updating / changing data access uses a shared service but no requests.

%if &type=QUERY %then %do ;
 LIBNAME lib '/myServer/library' ;
%end ;
%else %do ;
 LIBNAME lib '/myServer/library' server=shareLib ;
%end;

This is not my actual code, but I know if the request will simply send data back or modify an existing record or add a new record (update);

I initially made this distinction because we had some glitches related to the shared service (not sure if this is the correct terminology), but the link to lib for requesting data did not work. Since then, we have, I think, solved this problem, but I wonder if I will tune in to problems.

thanks

+5
source share
1 answer

Since your question is more like asking for general advice on data access and concurrency in SAS, my answer will be formed as a general advice, more than a specific solution.

- SAS. , , .

  • "ACCESS=READONLY" libname. , , , libname . , . SAS , .
  • SAS/SHARE , , (/) , SAS/SHARE - . , , libname "SERVER=SHARELIB", SAS/SHARE . libname SAS/SHARE, SAS, , libname "LIBNAME LIB SERVER=SHARELIB" ( , - SAS/SHARE ). , SAS SAS/SHARE.
  • LOCK LOCK. , SAS- libname, , . SAS lock lib , () .
  • . CNTLLEV. , "DATA LIB.MYDATA(CNTLLEV=LIB);" , , . CNTLLEV=MEM CNTLLEV=REC .

-, . , .

+7

All Articles