Le script n'opère pas sur des tables de données (SASHELP ou autres). Il interagit directement avec une source externe, le serveur de métadonnées de SAS 9, pour lire et écrire des informations sur les identités et les groupes.
1 Bloc de code
OPTIONS / %LET
Explication : Ce bloc configure les paramètres de connexion au serveur de métadonnées SAS 9 (adresse, port, identifiants) et définit les noms des groupes source et destination dans des macro-variables. Ces options sont spécifiques à l'environnement SAS 9.
/* Specify the source and destination group names. */
15
16
%let source_group_name='source group';
17
%let dest_group_name='destination group';
2 Bloc de code
DATA STEP
Explication : Ce bloc DATA _null_ utilise des fonctions spécifiques à SAS 9 pour interagir avec le serveur de métadonnées. Il résout les URI des groupes source et destination (`metadata_resolve`), vérifie leur existence, puis boucle sur chaque membre du groupe source (`metadata_getnasn`). Pour chaque membre, il récupère son nom (`metadata_getattr`) et l'associe au groupe de destination (`metadata_setassn`). Le programme s'arrête si l'un des groupes n'est pas trouvé.
Copié !
data _null_;
/* Initialize variables. */
length type1 type2 id1 id2 src_uri dest_uri mem_uri mem_name $ 50;
call missing (of _character_);
/* Define query. */
src_obj="omsobj:IdentityGroup? @Name=&source_group_name";
dest_obj="omsobj:IdentityGroup? @Name=&dest_group_name";
/* Test for the existence of the source group. */
rc1=metadata_resolve(src_obj,type1,id1);
src_uri=cats(type1,'\',id1);
if rc1 < 1 then do; /* If unable to locate, notify and stop. */
put "ERROR: Source group &source_group_name not found in Metadata.";
stop;
end;
/* Test for the existence of the destination group. */
rc2=metadata_resolve(dest_obj,type2,id2);
dest_uri=cats(type2,'\',id2);
if rc2 < 1 then do; /* If unable to locate, notify and stop. */
put "ERROR: Destination group &dest_group_name not found in Metadata.";
stop;
end;
/* Count the number of members in the source group. */
mem_count=metadata_getnasn(src_uri,"MemberIdentities",1,mem_uri);
put "NOTE: Source group &source_group_name has " mem_count "members.";
/* For each member in the source group, add the member to the destination group. */
do n=1 to mem_count;
rc=metadata_getnasn(src_uri,"MemberIdentities",n,mem_uri);
rc=metadata_getattr(mem_uri,"Name",mem_name);
put "NOTE: Adding " mem_name "to destination group &dest_group_name";
rc=metadata_setassn(dest_uri,"MemberIdentities","APPEND",mem_uri);
put mem_uri;
end;
run;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
« Ce script est un outil indispensable pour les administrateurs SAS 9.4 souhaitant cloner des structures de permissions ou réorganiser des départements sans passer par de fastidieuses manipulations manuelles dans la SAS Management Console. Il illustre parfaitement la puissance de l'interface de métadonnées pour manipuler les objets de type IdentityGroup. »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.