Publié le :
Administration CREATION_INTERNE

Extraction des informations sur les bibliothèques de bases de données depuis les métadonnées

Ce code est également disponible en : Deutsch English Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
Le programme se connecte à un serveur de métadonnées SAS© 9 pour identifier toutes les bibliothèques de type base de données (`IsDBMSLibname = '1'`). Pour chaque bibliothèque trouvée, il récupère des informations associées telles que le nom de la bibliothèque, l'utilisateur du login par défaut, le serveur d'application, le schéma, le nom du serveur de base de données, la source de données et le domaine d'authentification. Les résultats sont stockés dans une table `work.libinfo`. Ce code est spécifique à SAS© 9 et n'est pas compatible avec SAS© Viya car il utilise les fonctions `metadata_*` qui interagissent avec l'ancien serveur de métadonnées.
Analyse des données

Type : CREATION_INTERNE


Les données sont générées dynamiquement en interrogeant les métadonnées du serveur SAS à l'aide des fonctions spécifiques `metadata_resolve`, `metadata_getnobj`, `metadata_getattr` et `metadata_getnasn`. Le script ne lit aucune donnée externe ou de SASHELP.

1 Bloc de code
OPTIONS
Explication :
Ce bloc configure les options globales de la session SAS pour établir une connexion à un serveur de métadonnées SAS 9. Il spécifie l'adresse du serveur, le port, les informations d'identification, le nom du référentiel et le protocole de connexion. Ces paramètres sont indispensables pour l'utilisation des fonctions `metadata_*` dans les étapes suivantes.
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 DATA STEP crée la table `work.libinfo`. Il commence par rechercher dans les métadonnées SAS toutes les bibliothèques de type SGBD via `metadata_resolve`. Ensuite, il itère sur chaque bibliothèque trouvée pour en extraire des attributs spécifiques (nom de la bibliothèque, utilisateur, schéma, serveur de base de données, etc.) en utilisant une série de fonctions `metadata_get...`. Les informations collectées pour chaque bibliothèque sont ajoutées comme une nouvelle ligne dans la table de sortie.
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 
16 libcount=metadata_resolve(obj,type,id);
17 put "INFO: Found " libcount "database libraries.";
18 /* for each library found, extract name and associated properties */
19 /*
20 default login,
21 first associated application server,
22 schema,
23 database server
24 */
25 IF libcount > 0 THEN DO n=1 to libcount;
26 
27 rc=metadata_getnobj(obj,n,lib_uri);
28 rc=metadata_getattr(lib_uri,"Name",lib_name);
29 rc=metadata_getnasn(lib_uri,"DefaultLogin",1,login_uri);
30 rc=metadata_getattr(login_uri,"UserID",user);
31 rc=metadata_getnasn(lib_uri,"DeployedComponents",1,app_uri);
32 rc=metadata_getattr(app_uri,"Name",app_name);
33 rc=metadata_getnasn(lib_uri,"UsingPackages",1,schema_uri);
34 rc=metadata_getattr(schema_uri,"SchemaName",schema);
35 rc=metadata_getnasn(schema_uri,"DeployedComponents",1,dbms_uri);
36 rc=metadata_getattr(dbms_uri,"Name",dbms_name);
37 rc=metadata_getnasn(dbms_uri,"SourceConnections",1,conn_uri);
38 rc=metadata_getnasn(conn_uri,"Properties",1,prop_uri);
39 rc=metadata_getattr(prop_uri,"DefaultValue",datasrc);
40 rc=metadata_getnasn(conn_uri,"Domain",1,dom_uri);
41 rc=metadata_getattr(dom_uri,"Name",authdomain);
42 OUTPUT; /* Push results to table */
43 
44 END;
45 ELSE put "INFO: No libraries to resolve.";
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