[caption id="" align="aligncenter" width="444"]
Même Tom Hanks galère quand il faut déboguer un libname ![/caption]
Aujourd'hui, je vous propose de découvrir une option simple à mettre en oeuvre afin de déboguer facilement une bibliothèque Meta. Si vous ne connaissez pas ce type de bibliothèque utilisant le moteur Meta, vous pouvez commencer par lire la documentation SAS sur ce type de bibliothèque, disponible ici et la.
Maintenant, si vous travaillez avec un libname défini dans les métadonnées vous êtes à l'aise avec la syntaxe suivante :
Toutefois, en utilisant un libname s'appuyant sur l'engine Meta vous ne connaissez pas les options associés à la bibliothèque , ni la syntaxe libname utilisée.
Aussi , en cas de problème de connexion, par exemple, il peut être donc intéressant de connaitre la syntaxe soumise ; de savoir ce qui se cache "behind the scenes" comme disent les américains.
C'est la qu'entre en scène l'option LIBDEBUG.
Son utilisation est enfantine :
En soumettant le code SAS ci-dessus, nous allons créer la bibliothèque NTZ définit dans les métadonnées :

Toutefois, avec l'option libdebug, une ligne est ajouté dans le journal SAS précisant l'instruction libname utilisé pour créer la bibliothèque.
Dans le cas de mon exemple voici la ligne correspondante affichée dans le journal :
Magique, non ?
L'option nous permet ainsi de visualiser l'ensemble des options utilisé "behind the scenes". Nous pouvons constater que de nombreuses options sont utilisés.
L'option permet également de connaitre l'utilisateur de la base de données utilisé (admin) et permet également de se rendre compte que l'accès à la base est en lecture seule (ACCESS=READONLY).
Aussi, je vous invite à prendre connaissance de la note Usage Note 46712: Option for debugging META Libname Engine libraries concernant cette option.
A noter, que cette option n'est disponible qu'à partir de SAS 9.3 mais activable avec SAS 9.2 Maintenance 3 après avoir installé le hotfix SAS B25226.
Pour conclure en beauté, le code ci-dessous permet de remonter quelques informations utiles pour pousser vos investigations :
options metadebug;
%let my_metauser=%scan(&_METAUSER,1,'@');
%put _metauser="&my_metauser";
%let mymetauser = %scan(%sysget(METAUSER),1,'@');
%put metauser="&mymetauser";
%let mymetapass = %scan(%sysget(METAPASS),1,'@');
%put metapass="&mymetapass";
options msglevel=I sastrace='d,,d,d' nostsuffix sastraceloc=saslog;
proc options option=metauser value;run;
options sql_ip_trace=all;
libname TEST META library='malib' libdebug;
Si vous souhaitez en savoir un peu plus sur SAS/ACCESS, vous pouvez visiter le site de SAS mais également parcourir mes articles dédiés à SAS/ACCESS
Pour faire un lien vers cet article : https://tinyurl.com/metalibdebug
Même Tom Hanks galère quand il faut déboguer un libname ![/caption]
Aujourd'hui, je vous propose de découvrir une option simple à mettre en oeuvre afin de déboguer facilement une bibliothèque Meta. Si vous ne connaissez pas ce type de bibliothèque utilisant le moteur Meta, vous pouvez commencer par lire la documentation SAS sur ce type de bibliothèque, disponible ici et la.
Maintenant, si vous travaillez avec un libname défini dans les métadonnées vous êtes à l'aise avec la syntaxe suivante :
1
2
3
4
5
6
2
3
4
5
6
libname nom_libname META library=nom_bibiliotheque_meta metaserver=adresse_serveur_metadata
metaport=port_server_metadata
metaprotocol=bridge
metauser=login_metadata
metapass=password_metadata
metarepository='Foundation';
metaport=port_server_metadata
metaprotocol=bridge
metauser=login_metadata
metapass=password_metadata
metarepository='Foundation';
1
libname TEST META library="malib" libdebug;
En soumettant le code SAS ci-dessus, nous allons créer la bibliothèque NTZ définit dans les métadonnées :

1
2
3
2
3
NOTE: Libref NTZ was successfully assigned as follows:
Engine: META
Physical Name: 172.28.193.3
Engine: META
Physical Name: 172.28.193.3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
LIBDEBUG: Libname NTZ NETEZZA
DATABASE=TEST
BULKUNLOAD=YES
PRESERVE_COL_NAMES=YES
DBMAX_TEXT=2048
AUTOCOMMIT=NO
PRESERVE_TAB_NAMES=YES
ACCESS=READONLY
CONNECTION_GROUP=CONNECT_A
CONNECTION=SHAREDREAD
TRACE=YES
SQL_FUNCTIONS=ALL
INSERTBUFF=10
MULTI_DATASRC_OPT=IN_CLAUSE
DIRECT_SQL=NOGENSQL
SERVER="172.28.193.3" USER="admin"
PASSWORD='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
DATABASE=TEST
BULKUNLOAD=YES
PRESERVE_COL_NAMES=YES
DBMAX_TEXT=2048
AUTOCOMMIT=NO
PRESERVE_TAB_NAMES=YES
ACCESS=READONLY
CONNECTION_GROUP=CONNECT_A
CONNECTION=SHAREDREAD
TRACE=YES
SQL_FUNCTIONS=ALL
INSERTBUFF=10
MULTI_DATASRC_OPT=IN_CLAUSE
DIRECT_SQL=NOGENSQL
SERVER="172.28.193.3" USER="admin"
PASSWORD='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';







