2009-02-21 15 views
5

Bunu okuduğunuz için teşekkür ederiz.SAS veri kümesi için, çoklu kullanıcı erişimi için kilitlemeyi önlemenin en iyi yolu nedir?

SAS/IntrNet uygulamamın kullanıcıları tek bir veri kümesinin değişikliklerini (yeni) ekleme ve güncelleme (kayıtlara ekleme) için libref'i kurarken bir paylaşılan hizmet (server = sharedLib) kullanıyorum. Uygulama, veri kümemi sorgulamak için de kullanılacaktır. Kilitlemeyi en aza indirmek için, yalnızca Proc SQL yerine (tüm üyeyi kilitleyen) değişiklik yapmak ve güncellemek için bir veri adımı kullanıyorum. Bununla birlikte, sadece veriyi güncelleme/değiştirme erişim hizmetini kullansa, ancak sorguları yapmazsa kilitlemenin az ya da çok olası olup olmadığını merak ediyorum.

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

bu benim gerçek kod değil, ama ben isteği sadece geri veri göndermek için gidiyor olsun veya olmasın biliyor veya varolan bir kayıt değiştirmek veya yeni bir rekor (güncelleme) eklerim;

Bu ayrımı ilk olarak yapmıştım çünkü paylaşım hizmetine bağlanan bazı hatalar yaşıyorduk (doğru terminoloji olduğundan emin değiliz), ancak verileri sorgulamak için lib'e başvurmak başarısız olmadı. O zamandan beri, bu problemi çözdüm sanırım, ama kendimi sorunlara karşı ayarlayıp kurmayacağımı merak ediyorum.

teşekkürler soru daha SAS veri erişimi ve eşzamanlılık genel tavsiye talebi gibi, cevabım genel tavsiye olarak oluşacak olduğundan

cevap

7

, belirli bir çözümü daha fazla.

Mükemmel SAS çevrimiçi dökümantasyonu var. Lütfen the index adresini ziyaret edin ve daha fazla okuma için ilgili bilgileri bulun.

  1. Lütfen "ACCESS=READONLY" libname seçeneğine bakın. Neredeyse söylediği şeyi yapar, yani libname'deki veri üyelerine salt okunur olması için erişimi kısıtlar. Bu, değişmeyen bir sorgu sırasında verilerinizi kazara değiştirmemenizin yararına sahiptir. Ayrıca, SAS'ın, veriler üzerinde daha yüksek kontrol seviyeleri elde etmek için sorguları değiştiren veriler için biraz oda bırakmasını sağlar. SAS/SHARE eşzamanlı veri erişimini mümkün kılar, böylece aynı verilere aynı anda erişim (okuma/yazma) sağlamanız gerekiyorsa, SAS/SHARE iyi bir seçimdir. Bu, libname adınızı sadece bir kez atayarak kurtulmak anlamına gelir, libname deyiminizi "SERVER=SHARELIB" seçeneğiyle verir ve SAS/SHARE eşzamanlı veri erişimini yönetir. Eğer libname'yi SAS/SHARE sunucu işleminize atarsanız, bu libname'e erişim gerektiren tüm sonraki SAS süreçleri sadece "LIBNAME LIB SERVER=SHARELIB" gibi bir libname atamak zorundadır (fiziksel yol olmadığını unutmayın - SAS/SHARE sunucu işlemi bununla ilgilenir). SAS/SHARE sunucunuz için ayrı bir SAS işleminiz varsa, bu kurulum en iyi şekilde çalışır.
  2. Ayrıca libname'nizi LOCK deyimiyle veya LOCK komutuyla da kilitleyebilirsiniz. Bu, SAS programınızın, ihtiyacınız olan şey olması durumunda, bir libname'e özel erişim haklarını sağlayabileceği anlamına gelir. Diğer SAS işlemleri, belirli bir libname'i sorgulamak için kilit komutunu kullanabilir ve (özel) erişim elde edip edemeyeceğini görebilir.
  3. Ayrıca veri üye seviyesinde erişimi kontrol edebilirsiniz. Bu CNTLLEV veri seti seçeneği ile yapılır. Örneğin, "DATA LIB.MYDATA(CNTLLEV=LIB);", erişim denetiminin kitaplık düzeyinde olduğunu ve kitaplığa yalnızca bir güncelleştirme işlemiyle eşzamanlı erişimi kısıtladığını belirtir. CNTLLEV=MEM ve CNTLLEV=REC, sırasıyla eşzamanlı erişimi üye düzeyinde ve kayıt düzeyinde kısıtlar.

Bu seçenekler birçok farklı yolla birleştirilebilir; böylece, istediğiniz kadar ince taneli erişim elde edebilmeniz için çok fazla alan sağlar. Umarım bu seçimler, görevinizi tamamlamanıza yardımcı olur.

+0

Yanıt için teşekkürler –

İlgili konular