Publié le :
Administration CREATION_INTERNE

Extraction des métadonnées des bibliothèques de base de données

Ce code est également disponible en : Deutsch 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© (technologie SAS© 9) pour inventorier les bibliothèques de type SGBD (DBMS). Il utilise les fonctions SAS© d'interface de métadonnées (`metadata_resolve`, `metadata_get...`) pour extraire des informations de configuration telles que le nom de la bibliothèque, le serveur d'application, le schéma, le serveur de base de données, les connexions sources et les domaines d'authentification. Bien que techniquement exécutable en SAS© Viya, il dépend de la présence et de la connexion à un serveur de métadonnées SAS© 9 hérités.
Analyse des données

Type : CREATION_INTERNE


Les données sont générées dynamiquement par l'interrogation des objets du serveur de métadonnées via des appels de fonctions système.

1 Bloc de code
GLOBAL OPTIONS
Explication :
Définition des paramètres de connexion au serveur de métadonnées (hôte, port, identifiants).
Copié !
1options
2 metaserver="<hostname>"
3 metaport=8561
4 metauser="sasadm @saspw"
5 metapass="<password>"
6 metarepository=Foundation
7 metaprotocol=bridge;
2 Bloc de code
DATA STEP Data
Explication :
Ce bloc Data Step effectue l'extraction principale. Il initialise une recherche d'objets de type 'SASLibrary' configurés comme SGBD. Il itère ensuite sur chaque bibliothèque trouvée pour récupérer ses attributs et ses objets liés (Login, Schema, Connection, Domain) via les fonctions 'metadata_getnasn' (associations) et 'metadata_getattr' (attributs), puis stocke le résultat dans la table 'work.libinfo'.
Copié !
1DATA work.libinfo;
2 
3 /*declare and initialize variables */
4 LENGTH
5 type user schema $ 20
6 lib_uri lib_name app_uri app_name schema_uri login_uri dom_uri
7 dbms_uri dbms_name conn_uri prop_uri datasrc authdomain $ 50
8 id $ 17;
9 keep lib_name app_name user schema dbms_name datasrc authdomain;
10 call missing(of _character_);
11 
12 obj="omsobj:SASLibrary? @IsDBMSLibname = '1'";
13 
14 /* Search Metadata for libraries */
15 libcount=metadata_resolve(obj,type,id);
16 put "INFO: Found " libcount "database libraries.";
17 
18 IF libcount > 0 THEN DO n=1 to libcount;
19 rc=metadata_getnobj(obj,n,lib_uri);
20 rc=metadata_getattr(lib_uri,"Name",lib_name);
21 rc=metadata_getnasn(lib_uri,"DefaultLogin",1,login_uri);
22 rc=metadata_getattr(login_uri,"UserID",user);
23 rc=metadata_getnasn(lib_uri,"DeployedComponents",1,app_uri);
24 rc=metadata_getattr(app_uri,"Name",app_name);
25 rc=metadata_getnasn(lib_uri,"UsingPackages",1,schema_uri);
26 rc=metadata_getattr(schema_uri,"SchemaName",schema);
27 rc=metadata_getnasn(schema_uri,"DeployedComponents",1,dbms_uri);
28 rc=metadata_getattr(dbms_uri,"Name",dbms_name);
29 rc=metadata_getnasn(dbms_uri,"SourceConnections",1,conn_uri);
30 rc=metadata_getnasn(conn_uri,"Properties",1,prop_uri);
31 rc=metadata_getattr(prop_uri,"DefaultValue",datasrc);
32 rc=metadata_getnasn(conn_uri,"Domain",1,dom_uri);
33 rc=metadata_getattr(dom_uri,"Name",authdomain);
34 OUTPUT; /* Push results to table */
35 END;
36 ELSE put "INFO: No libraries to resolve.";
37RUN;
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 : Author: Greg Wootton Date: 22DEC2016


Banner
Le Conseil de l'Expert
Expert
Simon
Expert SAS et fondateur.
« L'utilisation des fonctions METADATA_* est la méthode la plus puissante pour auditer un écosystème SAS 9. Ce script permet de "remonter le fil" des dépendances techniques, depuis la bibliothèque logique jusqu'aux paramètres de connexion physiques (schéma, serveur de base de données et domaine d'authentification), offrant une visibilité impossible à obtenir via un simple LIBNAME. »