Depuis la version 15 de Sybase Adaptive Server Enterprise, Sybase a repris en main le développement des pilotes ODBC et OLE DB et ne dépend plus de l'éditeur tiers MERANT. Pour plus d'informations sur les migrations des connexions ODBC et OLE DB lors du passage d'un client ASE 12.x vers un client ASE 15.x : ASE ODBC Driver and OLE DB Provider Migration Technical Whitepaper ».
Les pilotes ODBC pour ASE 12 (MERANT) et ASE 15 diffèrent dans leur appellation et leur localisation dans le client Sybase :
| Propriété | Pilote ODBC ASE 12 | Pilote ODBC ASE 15 |
|---|---|---|
| Appellation | Sybase ASE ODBC Driver | Adaptive Server Enterprise |
| Localisation | %SYBASE%\ODBC-3_5 | %SYBASE%\DataAccess\ODBC |
| Variable PATH | %SYBASE%\ODBC-3_5;%PATH% | %SYBASE%\DataAccess\ODBC\dll;%PATH% |
| Pilote (dll) | %SYBASE%\ODBC-3_5\SYODASE.DLL | %SYBASE%\DataAccess\ODBC\dll\sybdrvodb.dll |
| Setup (dll) | %SYBASE%\ODBC-3_5\SYODASES.DLL | %SYBASE%\DataAccess\ODBC\dll\sybdrvodb.dll |
%SYBASE% désigne dans la suite de ce document le répertoire d'installation du client Sybase ASE sur le poste de travail Windows. Quelle que soit la version du client (Sybase ASE 12 ou Sybase ASE 15), le chemin d'installation %SYBASE% est le même (C:\Logiciel\sybase).
La conversion d'une connexion ODBC ASE 12 vers ODBC ASE 15 est relativement simple, toutefois dans des circonstances exceptionnelles, le composant ODBC ASE 12 doit être conservé et ajouté au client Sybase ASE 15.
Cet article décrit la procédure pour conserver sur un poste de travail Windows le composant ODBC ASE 12 dans un client Sybase ASE 15. L'objectif consiste à ne pas devoir migrer le(s) connexion(s) ODBC ASE 12 existante(s) sur ce poste de travail.
Pourquoi ne pas migrer une connexion ODBC ASE 12 ? Circonstance exceptionnelle : la connexion ODBC ASE 12 est par exemple utilisée dans une base Access 2003 avec tables attachées, base Access localisée sur un partage réseau et accédée par d'autres utilisateurs dont le poste de travail n'a pas encore été migré en Sybase 15 côté client. Le "réattachement" des tables dans cette base Access 2003 avec le composant ODBC 15 rendra inexploitable cette base pour tous les utilisateurs ayant encore un client ASE 12 sur leur poste.
Cette méthode présente également l'avantage de migrer les postes clients de la version Sybase 12 vers la version Sybase 15 sans modifier globalement toutes les connexions ODBC existantes sur un poste de travail avec des régressions éventuelles et pénalisantes pour le métier. Les connexions ODBC ASE 12 sont ensuite migrées unitairement et ultérieurement après revue d'impact.
La connexion ODBC dans ce cas pratique s'appelle T_PROD et il s'agit d'une source de données ODBC utilisateur (User DSN - Data Source Name). Le pilote (ou driver) de la source de données T_PROD est le pilote Sybase ASE 12 MERANT (Sybase ASE ODBC Driver).
| Panneau de configuration ODBC | Base de registres | |
|---|---|---|
|
DOS>reg query "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources" /v "T_PROD" ! REG.EXE VERSION 3.0
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources
T_PROD REG_SZ Sybase ASE ODBC Driver
DOS>reg query "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\T_PROD" ! REG.EXE VERSION 3.0
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\T_PROD
Driver REG_SZ C:\Logiciel\sybase\ODBC-3_5\SYODASE.DLL
Description REG_SZ
ServerName REG_SZ DBA_T1_ASE
Servers REG_SZ
Database REG_SZ master
...
|
Le client ASE 12 a été ici désinstallé pour être remplacé par le client ASE 15. Avec la désinstallation du client ASE 12, le répertoire %SYBASE%\ODBC-3_5 est également supprimé, répertoire qui contient le pilote ASE 12 "Sybase ASE ODBC Driver" utilisé par la connexion ODBC T_PROD. La source de données ODBC T_PROD devient inexploitable.
Voici les étapes pour réintégrer et utiliser le pilote ASE 12 sur un poste dont le client Sybase est en version 15.
Installer le client Sybase ASE 12 sur une machine vierge, et dans la mesure du possible au niveau de patch le plus élevé.
Dans le répertoire d'installation du client Sybase ASE 12, récupérer l'intégralité du répertoire ODBC-3_5 qui contient toutes les librairies DLLs nécessaires au pilote Sybase ASE 12 ODBC Merant (syodase.dll, syodases.dll...).
Les sources ODBC systèmes et utilisateurs définies avec le pilote Sybase ASE ODBC Driver stockent en dur le chemin complet du pilote :
DOS>reg query "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\T_PROD"
...
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\T_PROD
Driver REG_SZ C:\Logiciel\sybase\ODBC-3_5\SYODASE.DLL
...
Pour minimiser les impacts sur les sources de données, le répertoire ODBC-3_5 est donc installé à la racine du client ASE 15 : %SYBASE%\ODBC-3_5 (C:\Logiciel\sybase\ODBC-3_5).
Il est bien entendu possible à cette étape de décider d'installer le répertoire ODBC-3_5 dans un tout autre endroit du poste de travail Windows, mais ce choix nécessite des opérations supplémentaires car il est nécessaire de modifier dans ce cas toutes les sources ODBC systèmes et utilisateur afin de mettre à jour la clé "Driver" pour chacune de ces sources dans la base de registres.
Éditer un fichier de registres sybase-odbc-3_5.reg afin d'importer le référencement du pilote "Sybase ASE ODBC Driver" dans les clés de registre HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI et HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC Drivers.
Les clés à importer sont les suivantes :
DOS> type sybase-odbc-3_5.reg
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers] "Sybase ASE ODBC Driver"="Installed" [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Sybase ASE ODBC Driver] "AltDefaults"="1" "APILevel"="1" "ConnectionFunctions"="YYY" "Driver"="C:\\Logiciel\\sybase\\ODBC-3_5\\SYODASE.DLL" "DriverODBCVer"="03.50" "FileUsage"="0" "Setup"="C:\\Logiciel\\sybase\\ODBC-3_5\\SYODASES.DLL" "smProcessPerConnect"="Y" "SQLLevel"="0" "UsageCount"="1"
Les valeurs chaînes Driver et Setup sont à adapter en fonction du répertoire d'installation du répertoire ODBC-3_5.
Sauvegarder la base de registres (par sécurité) et dans une invite de commandes DOS, lancer l'import des clés avec l'utilitaire reg et l'option /S. L'option /S annule la demande de confirmation et la boîte de dialogues notifiant le succès de l'import :
DOS> reg /S sybase-odbc-3_5.reg
Pour vérifier l'import des clés, utiliser l'option query de l'utilitaire reg :
DOS> reg query "HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers" /v "Sybase ASE ODBC Driver" ! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers
Sybase ASE ODBC Driver REG_SZ Installed
DOS> reg query "HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Sybase ASE ODBC Driver" ! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Sybase ASE ODBC Driver
AltDefaults REG_SZ 1
APILevel REG_SZ 1
ConnectionFunctions REG_SZ YYY
Driver REG_SZ C:\Logiciel\sybase\ODBC-3_5\SYODASE.DLL
DriverODBCVer REG_SZ 03.50
FileUsage REG_SZ 0
Setup REG_SZ C:\Logiciel\sybase\ODBC-3_5\SYODASES.DLL
smProcessPerConnect REG_SZ Y
SQLLevel REG_SZ 0
UsageCount REG_SZ 1
|
À cette étape, un premier test de configuration de la source de données ODBC T_PROD peut aboutir à une erreur système 126.

L'erreur n'est pas très grave et corrigée avec les opérations ci-dessous :
Vérifier tout d'abord que la variable %SYBASE_OCS% du client ASE 15 est bien définie (OCS-15_0) :
DOS> echo %SYBASE%\%SYBASE_OCS%\dll
C:\Logiciel\sybase\OCS-15_0\dll
Vérifier ensuite que le chemin %SYBASE%\%SYBASE_OCS%\dll est bien présent dans la variable d'environnement %PATH% du poste de travail Windows :
DOS> echo %PATH%
...;C:\Logiciel\sybase\OCS-15_0\dll;C:\Windows;C:\Windows\system32
Après vérification des variables d'environnement, si l'erreur 126 survient toujours, Dependency Walker (Dependency Walker 2.2 Home page »), utilitaire très pratique qui analyse les dépendances de librairies DLLs, montre très rapidement que la librairie syodase.dll dépend des librairies libcs.dll et libct.dll, librairies qui sont alors à priori introuvables :
DOS>depends -ocresult.log "C:\Software\sybase\sybase-15.0\ODBC-3_5\syodase.dll" DOS> type result.log
?,"LIBCS.DLL","Error opening file. Le fichier spécifié est introuvable (2).",,,,,,,,,,,,,,,,,, ?,"LIBCT.DLL","Error opening file. Le fichier spécifié est introuvable (2).",,,,,,,,,,,,,,,,,,
Les librairies libcs.dll et libct.dll sont des librairies du client Sybase ASE 12 et installées dans le répertoire %SYBASE%\OCS-12_0. Avec le client Sybase ASE 15, les librairies de la couche Open Client lib<nom> ont été renommées en libsyb<nom> à la suite de conflits avec d'autres produits. Les librairies libcs.dll et libct.dll sont respectivement renommées en libsybcs.dll et libsybct.dll dans le client ASE 15.
Afin que les applications développées avec des couches Open Client inférieures avec la version 15 continuent de fonctionner, comme c'est le cas ici, le script %SYBASE%\%SYBASE_OCS%\scripts\copylibs.bat avec l'option create copie les librairies nécessaires libsyb<nom> sous leur ancien nom lib<nom> dans le répertoire %SYBASE%\%SYBASE_OCS%\dll.
Lancer copylibs.bat avec l'option create :
DOS> C: DOS> cd %SYBASE%\%SYBASE_OCS%\scripts C:\Logiciel\sybase\OCS-15_0\scripts> copylibs.bat create
1 fichier(s) copié(s).
1 fichier(s) copié(s).
1 fichier(s) copié(s).
1 fichier(s) copié(s).
1 fichier(s) copié(s).
Pour information, voici les librairies copiées et renommées sous leur ancien nom, dont libcs.dll et libct.dll :
SET DLLDIR=%SYBASE%\%SYBASE_OCS%\dll ... :create copy %DLLDIR%\libsybblk.dll %DLLDIR%\libblk.dll copy %DLLDIR%\libsybcobct.dll %DLLDIR%\libcobct.dll copy %DLLDIR%\libsybcs.dll %DLLDIR%\libcs.dll copy %DLLDIR%\libsybct.dll %DLLDIR%\libct.dll copy %DLLDIR%\libsybdb.dll %DLLDIR%\libdb.dll copy %DLLDIR%\libsybsrv.dll %DLLDIR%\libsrv.dll copy %DLLDIR%\libsybxadtm.dll %DLLDIR%\libxadtm.dll GOTO end ...
Cette étape est optionnelle si le script de copie des librairires a été déjà exécuté.
Le pilote Sybase ASE ODBC Driver est dés lors opérationnel.
| Version | Date | Commentaires |
|---|---|---|
| 1.0 | 04/2011 | Version initiale |
ASE ODBC Driver and OLE DB
Provider Migration Technical Whitepaper
Dependency Walker 2.2 Home
page