accessControl checkOutObject

Protection de l'Infrastructure de Données (Shared Lock)

Scénario de test & Cas d'usage

Contexte Métier

Une enseigne de grande distribution lance ses soldes. De multiples processus (ETL, Reporting, API temps réel) lisent et écrivent dans des tables spécifiques de la librairie 'PROD_RETAIL'. Pour éviter qu'un administrateur ne supprime ou ne verrouille exclusivement toute la librairie par erreur pendant cet événement critique, on applique un verrou 'PARTAGÉ' sur la Caslib elle-même.
À propos du Set : accessControl

Gestion des droits d'accès et de la sécurité des données.

Découvrir toutes les actions de accessControl
Préparation des Données

Création de tables de ventes volumineuses (simulées via boucle).

Copié !
1 
2DATA casuser.VENTES_SOLDES;
3DO i=1 to 1000;
4id_magasin=rand('integer', 1, 50);
5montant=rand('uniform')*100;
6OUTPUT;
7END;
8 
9RUN;
10 

Étapes de réalisation

1
Tentative de sécurisation de la Caslib entière en mode PARTAGÉ (SHARED).
Copié !
1PROC CAS; ACCESSCONTROL.checkOutObject STATUS=rc /
2 checkOutType="SHARED",
3 ObjectSelector={objType="CASLIB", caslib="casuser"};
4 PRINT rc;
5RUN;
2
Validation que l'écriture dans une table enfant reste possible (le verrou partagé sur la caslib ne bloque pas l'accès aux tables pour la session courante).
Copié !
1 
2PROC CAS;
3datastep.runCode / code="
4data casuser.VENTES_SOLDES;
5set casuser.VENTES_SOLDES;
6solde_verifie=1;
7 
8run;
9";
10 
11RUN;
12 

Résultat Attendu


La Caslib 'casuser' est protégée contre un verrou exclusif global (qui bloquerait tout le monde), mais les opérations d'écriture sur les tables à l'intérieur de cette librairie restent possibles pour les processus autorisés. Le code retour doit indiquer le succès du verrouillage partagé.