Publié le :
Administration CREATION_INTERNE

Extraction des chemins sources des Stored Processes (Métadonnées SAS 9)

Ce code est également disponible en : English Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
Ce programme se connecte à un serveur de métadonnées SAS© 9 via les options META*. Il utilise les fonctions d'interface de métadonnées (metadata_resolve, metadata_getattr, etc.) pour rechercher tous les 'Stored Processes' définis avec un code source externe (fichier physique). Il récupère ensuite le nom du processus, le nom du fichier et le répertoire associé pour construire et stocker le chemin complet dans une table de sortie. Ce code est spécifique à l'architecture SAS© 9 et n'est pas natif à l'architecture SAS© Viya (qui n'utilise plus de serveur de métadonnées de ce type), sauf dans des contextes de migration ou de pont.
Analyse des données

Type : CREATION_INTERNE


Les données sont générées dynamiquement par l'interrogation du serveur de métadonnées via les fonctions système SAS (metadata_*).

1 Bloc de code
OPTIONS
Explication :
Configuration de la connexion au serveur de métadonnées SAS 9 (adresse, port, identifiants, dépôt).
Copié !
1options metaserver="meta.demo.sas.com"
2 metaport=8561
3 metauser="sasadm @saspw"
4 metapass="password"
5 metarepository=Foundation
6 metaprotocol=bridge;
2 Bloc de code
DATA STEP Data
Explication :
Étape DATA principale qui interroge les métadonnées pour trouver les objets 'StoredProcess' ayant un code source de type 'File'. Elle itère sur les résultats pour extraire les attributs de nom et de chemin d'accès, concaténant le répertoire et le nom de fichier.
Copié !
1DATA SOURCE;
2 
3 keep stp_name SOURCE; /* Retain only the stored process name and it's source code full path. */
4 
5/* Initialize variables. */
6 
7 LENGTH type id stp_uri stp_name file_uri file_name dir_uri path $ 50;
8 call missing (of _character_);
9 
10 obj="omsobj:ClassifierMap?ClassifierMap[ @PublicType='StoredProcess'][SourceCode/File]"; /* Search critera for Stored Processes that have an external file source. */
11 
12 stp_count=metadata_resolve(obj,type,id); /* Count all stored processes that meet our criteria. Only run loop if at least one exists. */
13 
14 IF stp_count > 0 THEN DO i=1 to stp_count; /* Loop: For each stp found, get attributes and associations. */
15 rc=metadata_getnobj(obj,i,stp_uri);
16 rc=metadata_getattr(stp_uri,"Name",stp_name); /* Get stp name. */
17 rc=metadata_getnasn(stp_uri,"SourceCode",1,file_uri); /* Get file Metadata object id. */
18 rc=metadata_getattr(file_uri,"FileName",file_name); /* Get file name. */
19 rc=metadata_getnasn(file_uri,"Directories",1,dir_uri); /* Get directory Metadata object id. */
20 rc=metadata_getattr(dir_uri,"DirectoryName",path); /* Get path to directory. */
21 SOURCE=catx('/',path,file_name); /* combine directory path and file name to create full path to file.*/
22 OUTPUT;
23 END; /* End loop. */
24 ELSE put "WARN: No Stored Processes with external source code files found in Metadata."; /* If no jobs are found, write a message to the log. */
25RUN;
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.


Banner
Le Conseil de l'Expert
Expert
Simon
Expert SAS et fondateur.
« L'utilisation des fonctions METADATA_* pour extraire les chemins physiques des Stored Processes (STP) est une pratique d'audit indispensable. Dans une architecture SAS 9, la métadonnée ne contient pas toujours le code lui-même, mais souvent un pointeur vers un fichier .sas sur le serveur. Ce script permet de réconcilier l'objet logique (vu dans la console) avec la réalité physique du système de fichiers. »