Publié le :

Copie de membres entre groupes de métadonnées SAS 9

Ce code est également disponible en : English
Attention : Ce code nécessite des droits administrateur.
Ce programme se connecte à un serveur de métadonnées SAS© 9 pour gérer les appartenances de groupes. Il identifie un groupe source et un groupe de destination par leur nom, puis vérifie leur existence. Si les deux groupes sont trouvés, le script parcourt chaque membre du groupe source et l'ajoute au groupe de destination. La progression est rapportée dans le journal SAS©. ATTENTION : Ce code est totalement incompatible avec l'environnement SAS© Viya 4 car il utilise des fonctions (`metadata_resolve`, `metadata_setassn`, etc.) et des options de connexion (`options metaserver...`) qui sont spécifiques à l'architecture SAS© 9 et son serveur de métadonnées, qui n'existe plus dans SAS© Viya.
Analyse des données

Type : EXTERNE


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.
Copié !
1/* Copyright © 2023, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.
2 * SPDX-License-Identifier: Apache-2.0
3 */
4 
5/* Edit Metadata connection information. */
6 
7options metaserver="meta.demo.sas.com"
8 metaport=8561
9 metauser="sasadm @saspw"
10 metapass="password"
11 metaprotocol=bridge
12 metarepository=Foundation;
13 
14/* 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é !
1DATA _null_;
2 
3/* Initialize variables. */
4 
5LENGTH type1 type2 id1 id2 src_uri dest_uri mem_uri mem_name $ 50;
6call missing (of _character_);
7 
8/* Define query. */
9 
10src_obj="omsobj:IdentityGroup? @Name=&source_group_name";
11dest_obj="omsobj:IdentityGroup? @Name=&dest_group_name";
12 
13/* Test for the existence of the source group. */
14 
15rc1=metadata_resolve(src_obj,type1,id1);
16src_uri=cats(type1,'\',id1);
17if rc1 < 1 then do; /* If unable to locate, notify and stop. */
18 put "ERROR: SOURCE group &source_group_name not found in Metadata.";
19 stop;
20end;
21 
22/* Test for the existence of the destination group. */
23 
24rc2=metadata_resolve(dest_obj,type2,id2);
25dest_uri=cats(type2,'\',id2);
26 
27if rc2 < 1 then do; /* If unable to locate, notify and stop. */
28 put "ERROR: Destination group &dest_group_name not found in Metadata.";
29 stop;
30end;
31 
32/* Count the number of members in the source group. */
33 
34mem_count=metadata_getnasn(src_uri,"MemberIdentities",1,mem_uri);
35put "NOTE: SOURCE group &source_group_name has " mem_count "members.";
36 
37/* For each member in the source group, add the member to the destination group. */
38 
39do n=1 to mem_count;
40 rc=metadata_getnasn(src_uri,"MemberIdentities",n,mem_uri);
41 rc=metadata_getattr(mem_uri,"Name",mem_name);
42 put "NOTE: Adding " mem_name "to destination group &dest_group_name";
43 rc=metadata_setassn(dest_uri,"MemberIdentities","APPEND",mem_uri);
44 put mem_uri;
45END;
46RUN;
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.
Informations de Copyright : Copyright © 2023, SAS Institute Inc., Cary, NC, USA. All Rights Reserved. SPDX-License-Identifier: Apache-2.0


Banner
Le Conseil de l'Expert
Expert
Michael
Responsable de l'infrastructure Viya.
« 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. »