Introduction
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 |
---|---|
Appellation | Sybase ASE ODBC Driver |
Localisation | %SYBASE%\ODBC-3_5 |
Variable PATH |
%SYBASE%\ODBC-3_5;%PATH% |
Pilote (dll) | %SYBASE%\ODBC-3_5\SYODASE.DLL |
Setup (dll) | %SYBASE%\ODBC-3_5\SYODASES.DLL |
Propriété | Pilote ODBC ASE 15 |
---|---|
Appellation | Adaptive Server Enterprise |
Localisation | %SYBASE%\DataAccess\ODBC |
Variable PATH |
%SYBASE%\DataAccess\ODBC\dll;%PATH% |
Pilote (dll) | %SYBASE%\DataAccess\ODBC\dll\sybdrvodb.dll |
Setup (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.
Cas pratique
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 |
---|
|
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.
Installation du client Sybase ASE 12 sur une machine vierge (ODBC-3_5)
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
…).
Incorporation du répertoire ODBC-3_5 dans le client ASE 15
Les sources ODBC systèmes et utilisateurs définies avec le pilote Sybase ASE ODBC Driver stockent en dur le chemin complet du pilote :
% 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.
Référencement du pilote Sybase ASE ODBC Driver 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 :
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 :
% reg /S sybase-odbc-3_5.reg
Pour vérifier l’import des clés, utiliser l’option query
de l’utilitaire reg
:
% 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
% 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
Activation de la compatibilité du pilote Sybase ASE ODBC Driver avec l’Open Client Sybase 15 (copylibs.bat)
À 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
) :
% 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 :
% 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 :
% depends -ocresult.log "C:\Software\sybase\sybase-15.0\ODBC-3_5\syodase.dll"
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
:
% C: % 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.