L'automatisation de l'inventaire des ressources via le serveur de métadonnées est une pratique d'excellence pour tout administrateur SAS. Ce script repose sur l'architecture OMA (Open Metadata Architecture), où chaque bibliothèque n'est pas un objet isolé, mais le centre d'un réseau d'associations complexes.
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 | options |
| 2 | metaserver="<hostname>" |
| 3 | metaport=8561 |
| 4 | metauser="sasadm @saspw" |
| 5 | metapass="<password>" |
| 6 | metarepository=Foundation |
| 7 | metaprotocol=bridge; |
| 1 | DATA 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."; |
| 46 | RUN; |