SAS/ACCESS to ODBC [DB2 sur iSeries] : Violation de segmentation
Après l'installation d'un pilote IBM iAccess iSeriesAccess sur une Red hat Linux 6.5 64 bits, vous pouvez rencontrer l'erreur suivante :
ERROR: An exception has been encountered.
Violation de segmentation. SAS WTABORT (Line Mode Process). Une exception est survenue durant wthtrm().
La connexion à DB2 fonctionne en dehors de SAS (via isql) et l'exécution de requète est possible.
Dans ce cas, le driver Iseries fourni par le client est ancien (seul compatible avec un système z/OS V5R4).
Pourquoi cet erreur ?
Ce "vieux" pilote ODBC est un driver ODBC Hybrid. En effet, certains vendeurs compilent leur pilote ODBC avec un modèle 32 bits d'interface plutôt qu'un modèle 64 bits. Les pilotes compilés de cette façon ne sont pas compatible avec le module SAS/ACCESS to ODBC en raison des paramètres 32 bis non compatible avec les paramètres 64 bits utilisé par SAS.
La solution ?
Il est nécessaire d'effectuer une manipulation côté SAS pour permettre la connexion à la base, via ODBC.
Pour contourner cette problématique, SAS/ACCESS Interface to ODBC propose un moteur compatible avec avec le gestionnaire unixODBC capable de travailler avec des pilotes basé sur le modèle 32 bits.
La manipulation est la suivante :
Dans votre répertoire d'installation ( SASFoundation/9.4/sasexe ) exécutez les opérations suivantes :
N'oubliez pas de faire une copie de sauvegarde de votre répertoire sasexe afin de pouvoir revenir en arrière en cas de problème.
1 2 |
$ mv sasodb sasodb.orig $ ln -s sasodb_u sasodb |
1 2 |
$ mv sasioodb sasioodb.orig $ ln -s sasioodb_u sasioodb |
1 2 |
$ mv sasodbcb sasodbcb.orig $ ln -s sasodbcb_u sasodbcb |
1 2 |
$ mv sasodbdb sasodbdb.orig $ ln -s sasodbdb_u sasodbdb |