Definir une Bibliotheque SAS/SHARE® dans SAS® Management Console

Le module SAS/SHARE permet un accès concurrentiel sur les tables SAS. Il donne par exemple la possibilité à plusieurs utilisateurs de mettre à jour une table en même temps.
La déclaration d'une bibliothèque SAS/SHARE au niveau des métadonnées va permettre la gestion centralisée des données partagées, des utilisateurs et de leurs droits sur les données.

Pour définir une bibliothèque SAS/SHARE au niveau de SAS Management Console il est donc nécessaire d'avoir la licence pour le module SAS/SHARE.

Déclaration de la bibliothèque

Depuis SAS Management Console :

1. Déployer le « Gestionnaire de bibliothèques de données ».

2. Cliquer droit sur « Bibliothèques SAS » et choisir « Nouvelle bibliothèque… »

3. Dans « Assistant Nouvelle bibliothèque » choisir « SAS/SHARE Remote Engine Library ».

4. Entrer le nom méta de la bibliothèque : dans le cas présent – test_share

5. Entrer le nom de la bibliothèque de type « Remote » : dans le cas présent lib_shar

6. Sélectionner le Serveur SAS/SHARE : dans ce cas – 'SASMain – SAS/SHARE Server'.
Sélectionner aussi le compte par défaut : dans ce cas – « sasdemo ».

Si le compte par défaut n'a pas été renseigné (la valeur dans ce cas : (Néant)), il se produit une erreur. Vous pouvez en savoir plus sur le type d'erreur rencontré à la fin de cet article.

7. Choisir une bibliothèque SAS Base à partager pour le Serveur SAS/SHARE ou définir une nouvelle, en cliquant sur « Nouveau ».
Si vous déclarez une nouvelle bibliothèque, il faut suivre les étapes suivantes :

7.1 Choisir le type de bibliothèque – dans notre cas, type BASE :

7.2 Entrer le nom méta de la bibliothèque SAS : dans notre cas – test_base

7.3 Entrer le nom de la bibliothèque SAS/BASE : dans ce cas - base1
Il faut sélectionner le chemin de la bibliothèque ou entrer un nouveau chemin, en cliquant sur « Nouveau »

7.4 Sélectionner « Options avancées… » et cocher « Library is pre-assigned » :

7.5 Sélectionner le Serveur SHARE : dans notre cas – « SASMain – SAS/SHARE Server »

7.6 Un récapitulatif est affiché à la fin de la création de bibliothèque SAS/BASE :

7.7 Après l'étape précédente, nous sommes renvoyés dans l'Assistant de création d'une nouvelle bibliothèque SAS/SHARE. La bibliothèque SAS/BASE créée apparaît au niveau de la bibliothèque partagée :

7.8. Sélectionner le serveur SAS auquel sera affectée cette bibliothèque : dans notre cas – SASMain Server

7.9. Un récapitulatif est affiché à la fin de la création de la bibliothèque test_share :

7.10. Après cette étape, il faut redémarrer le Serveur SAS/SHARE pour qu'il prenne en compte les modifications !

Problèmes qui peuvent être rencontrés

1. Pour vérifier que la bibliothèque SAS/BASE (base1 dans notre cas) a été bien assignée, il faut regarder le fichier de trace du Serveur SAS/SHARE.
Une ligne de ce type doit être présente :

NOTE : Libref base1 successfully assigned from logical server.

Si cette note n'apparaît pas, il faut créer dans le répertoire du serveur SHARE un fichier sasv9_ShareServer.cfg avec le contenu suivant :

************************************************/
-config /local/data/SAS_9.1/sasv9.cfg
-config /local/data/SASConfig/Lev1/SASMain/sasv9.cfg
-MetaAutoResources "omsobj:ServerComponent? @Name='SASMain - SAS/SHARE Server'"
/***************************************************/

Les chemins d'accès vers les deux fichiers sasv9.cfg sont à titre d'exemple ; il faut donc les changer.

Dans le fichier ShareServer.cfg il faut ajouter l'option « -config $DIR/sasv9_ShareServer.cfg » au niveau de la commande de démarrage du Serveur Share :

nohup $SASCMD -sysin $DIR/shareServer.sas -config $DIR/sasv9_ShareServer.cfg -log $DIR/logs/ShareServer_%Y.%m.%d.log -logparm "rollover=auto open=replaceold WRITE=IMMEDIATE" -noxcmd -noautoexec -noterminal -sasuser $DIR/sasuser > $DIR/logs/ShareServer_Console.log 2>&1 &
......

2. Si le serveur SAS/SHARE ne redémarre pas et que dans la LOG du Serveur il y a un message du type :

ERROR: This server cannot start because of the following problem reported by AUTHENTICATING SETUP CHECK:
ERROR: Server __8551 requires connecting userids to be validated but not all communications access methods used by this server validate userids. For information about setting up communications access methods, refer to the book Communications Access

Ce message est dû au fait que le Serveur Share requiert une connexion sécurisée et que la bibliothèque Share que nous avons créée ne comporte pas de compte d'identification (voir le point 6 de ce document). Donc, si le compte est renseigné, ce problème n'est pas rencontré.

Pour vérifier ce point, cliquer droit sur la bibliothèque méta « test_share » et sélectionner « Propriétés » ; dans l'onglet « Serveur de données », sélectionner un compte par défaut, comme dans l'exemple ci-dessous :

Une autre solution pour que le Serveur SAS/SHARE démarre, c'est de le faire en mode non sécurisé. Pour cela, il faut apporter les modifications suivantes dans le fichier SASConfig/Lev1/SASMain/ShareServer/startShareServer.sas :

remplacer

%let tcpsec=_secure_ ;
par
%let tcpsec=_none_ ;

et

Proc server server=&PORT authenticate=req ;
Run ;
par
Proc server server=&PORT authenticate=opt ;
Run ;

SAS recommande d'utiliser bien sûr la première solution, surtout s'il s'agit d'un serveur de production.

L'accès concurrentiel aux données SAS est piloté par des mécanismes propres à chaque situation. Ces cas sont décrit dans la Documentation SAS Online, chapitre SAS/SHARE – Locking SAS Data Objects – Defaults for Selected SAS Operations.

Catalin ALDEA
Consultant Support Clients - SAS France