Hallo zusammen,
wir haben im Unternehmen immer wieder das gleiche leidige Thema:
Im zentralen Data Warehouse werden verschiedene SAS Tabellen angeboten, auf die mehrere Dutzend Anwender lesend zugreifen - soweit kein Problem. Sobald die Tabellen aber aktualisiert werden, muss aber sichergestellt werden, dass niemand die entsprechende Tabelle derzeit im Zugriff hat - ansonsten bricht der Schreibvorgang ab ("A lock is not available..."), mit unterschiedlich schwerwiegenden Folgen.
Bislang hat das einigermaßen funktioniert, indem die Tabellen nur nachts im Batch-Betrieb geändert wurden. Durch neue Anforderungen wird es aber immer häufiger notwendig, auch tagsüber Änderungen durchzuführen. Hier bleibt uns bislang nur der Weg des try&error: Anwender per Mail über die anstehende Änderung informieren, hoffen, dass alle zur verabredeten Zeit aus den Daten raus sind, und dann den Updatevorgang starten. Wenns nicht klappt - nochmal von vorne.
Hat jemand eine Idee, wie man diesen unhaltbaren Zustand verbessern könnte?
Folgende Optionen könnte ich mir vorstellen:
- Beim reinen Lesezugriff wird der Datensatz nicht gesperrt und eine Aktualisierung ist möglich, auch wenn sich noch Anwender auf den Daten befinden.
Ich dachte an sowas wie die Libname-Option access=readonly, diese führte aber bisher nicht zum gewünschten Ergebnis.
- Der Schreibjob bekommt Rechte, alle Anwender von der entsprechenden Tabelle runterzuwerfen, bevor der Schreibvorgang beginnt.
Leider kenne ich zu keiner der Optionen eine konkrete Umsetzungsidee.
Die Anwender greifen bei uns i.d. Regel über den SAS Enterprise Guide 5.1 auf die Daten zu. Wir verwenden SAS 9.3 (sofern relevant).
LG Ilja
... View more