对于SAS数据集,防止多用户访问锁定的最佳方法是什么
谢谢你阅读这篇文章 设置libref时,我使用共享服务(server=sharedLib),以允许SAS/IntrNet应用程序的用户修改和更新(添加新)单个数据集的记录。该应用程序还将用于查询我的数据集。为了最小化锁定,我只使用一个数据步骤来修改和更新,而不是Proc-SQL(它锁定整个成员)。但是,我想知道,如果只有对数据的更新/修改访问使用共享服务,而查询不使用共享服务,那么锁定的可能性是大还是小对于SAS数据集,防止多用户访问锁定的最佳方法是什么,sas,Sas,谢谢你阅读这篇文章 设置libref时,我使用共享服务(server=sharedLib),以允许SAS/IntrNet应用程序的用户修改和更新(添加新)单个数据集的记录。该应用程序还将用于查询我的数据集。为了最小化锁定,我只使用一个数据步骤来修改和更新,而不是Proc-SQL(它锁定整个成员)。但是,我想知道,如果只有对数据的更新/修改访问使用共享服务,而查询不使用共享服务,那么锁定的可能性是大还是小 %if &type=QUERY %then %do ; LIBNAME lib '
%if &type=QUERY %then %do ;
LIBNAME lib '/myServer/library' ;
%end ;
%else %do ;
LIBNAME lib '/myServer/library' server=shareLib ;
%end;
这不是我的实际代码,但我知道请求是否只是将数据发送回或修改现有记录或添加新记录(更新)
我最初做出这种区分是因为我们在连接共享服务时遇到了一些故障(不确定这是正确的术语),但引用lib查询数据并没有失败。从那时起,我想我们已经解决了这个问题,但我想知道我是否在为自己的问题做准备
谢谢因为您的问题更像是请求有关SAS中数据访问和并发性的一般建议,所以我的回答将是一般建议,而不是具体的解决方案 有优秀的SAS在线文档。请访问,并找到相关信息供您进一步阅读
ACCESS=READONLY
”libname选项。它几乎做到了它所说的,即限制对libname中数据成员的访问为只读。这样做的好处是,在非更改查询过程中不会意外更改数据。它还允许SAS为数据更改查询留出一些空间,以获得对数据的更高级别的控制SERVER=SHARELIB
”,并让SAS/SHARE管理并发数据访问。如果将libname分配给SAS/SHARE server进程,则需要访问此libname的所有后续SAS进程只需分配libname,如“libname LIB server=SHARELIB”
(注意,没有物理路径-SAS/SHARE server进程会处理此问题)。如果您的SAS/SHARE服务器有一个单独的SAS进程,则此设置功能最佳DATA LIB.MYDATA(cntlev=LIB);
”指定访问控制在库级别,将并发访问限制为仅对库的一个更新进程cntlev=MEM
和cntlev=REC
分别在成员级别和记录级别限制并发访问