Dans un billet précédent, on avait déjà installé les pilotes ODBC sur ces serveurs RDS (Remote Desktop Services). Il se trouve que Microsoft SQL Server Integration Services privilégie la connectivité OLE-DB (Object Linking and Embedding, Database) dans les assistants Visual Studio pour les sources de données. Les fournisseurs SQL Server, Oracle et MS Access sont déjà présents. Manquent les fournisseurs MySQL/MariaDB et PostgreSQL.

Installation des fournisseurs OLE-DB 32 bits sur le serveur UBSRDS3

Il faut installer les pilotes OLEDB de MySQL (non maintenus depuis 2006) et PostgreSQL sur UBSBASE3. Pour télécharger celui de PostgreSQL, il faut exécuter stackbuilder.exe qui se trouve dans le répertoire pgsql\bin de la distribution courante de PostgreSQL pour windows.

Il faut alors cocher l'installation de PgOleDB v1.0.0.20 dans la catégorie Database Drivers.

Pour un serveur RDS, il vaut mieux cocher la case Skip Installation afin d'utiliser l'assistant Installer une application sur un serveur Bureau à distance.

Il existe des fournisseurs OLEDB 32-bits et des versions 64-bits.

L'outil généralement utilisé pour créer une chaine de connexion OLEDB est le fichier .UDL. Pour ceux qui ne connaissent pas, créez un fichier Texte (.TXT) sur votre bureau, et changez l'extension .TXT en .UDL. Double-cliquez sur le fichier qui est ouvert avec l'application OLE DB Core Services et vous verrez apparaitre un assistant. Cet assistant liste les fournisseurs OLEDB installés sur la machine – et permet de tester une connexion. Si vous ouvrez le fichier .UDL avec le bloc-notes, vous obtiendrez une chaine de connexion toute prête à être copiée/collée dans votre application.

Les fichiers UDL sont utiles pour :

  • résoudre les problèmes de connectivité.
  • prouver qu'un ordinateur peut se connecter à un serveur de base de données.
  • déterminer si le pilote OLE DB dont vous avez besoin est installé sur la machine.
  • générer une chaîne de connexion.

Une fois que nous avons créer un fichier UDL et après l'avoir exécuter sur notre système Windows Server 2008r2 64 bits, il va lister tous les fournisseur OLE DB 64 bits installés sur la machine.

La raison derrière est simple : lorsque vous double-cliquez sur un fichier UDL sur une machine 64 bits, il va énumérer seulement les fournisseurs OLE DB 64 bits et même si nous avons des fournisseurs OLE DB 32 bits déjà installés, nous ne serons pas en mesure de les constater parmi ceux énumérés dans la liste.

Créez un fichier UDL avec le nom MD.UDL dans le sous-répertoire utilisateur nommé téléchargements.

Lorsque l'on crée un fichier UDL sur une machine 64 bits et que l'on essaye de l'ouvrir , la commande "C:\Program Files\Common Files\System\Ole DB\oledb32.dll " , OpenDSLFile C:\Users\administrateur.UBS-BI\Downloads\MD.UDL est appelée par C:\windows\system32\rundll32.exe. Les deux DLL concernant le système 64 bits, seuls les fournisseurs 64 bits seront listés.

Nous pouvons trouver la version 32 bits de Oledb32.dll sous le chemin C:\Program Files (x86)\Common Files\System\Ole DB et la version 32 bits de rundll32.exe sous le chemin C:\WINDOWS\SysWOW64.

Dans un système Windows 64 bits :

  • Un process x86 est généralement installé dans C:\Program Files (x86) - ou C:\Windows\SysWow64.
  • Un process x64 est généralement installé dans C:\Program Files – ou C:\Windows\System32.

Certaines installations peuvent être différentes, ce qui complique la tâche – vous pouvez donc utiliser le gestionnaire de taches pour savoir si votre process est 32-bits ou 64-bits.

Concernant les DLLs :

  • Les DLLs x86 sont généralement situées dans C:\Windows\SysWow64
  • Les DLLs x64 sont généralement situées dans C:\Windows\System32
  • On peut également utiliser l’outil Dumpbin pour vérifier si une DLL est 32-bits ou 64-bits.

Le nommage est malheureusement trompeur. A noter que SysWow64 signifie "Windows On Windows" - et permet donc de lancer un process 32-bits dans un OS 64-bits.

La commande suivante nous donne aussi les fournisseurs 32 bits :

C:\Windows\syswow64\rundll32.exe 
"C:\Program Files (x86)\Common Files\System\Ole DB\oledb32.dll",
OpenDSLFile C:\Users\administrateur.UBS-BI\Downloads\MD.UDL
Installation des pilotes OLEDB MySQL et PostgreSQL
ÉtapeDescription
Installation du pilote OLEDB MySQL
1.1On lance l'assistant d'installation myoledb-3.9.6.msi
1.2On constate la présence du pilote nouvellement installé sous SSIS. Mais il n'est pas fonctionnel.
Installation du pilote OLEDB PostgreSQL
2.1On lance l'assistant d'installation pgoledb.msi
2.2On termine l'installation du pilote OLEDB.
2.3On constate la présence du pilote nouvellement installé.

La source de données générée est : Provider=PostgreSQL.1;Password=P@ssw0rd;User ID=Etudiant01;Data Source=UBSBASE3;Location=DB_Etudiant01;Extended Properties="" pour une connexion au serveur PostgreSQL 9.0.

Si le fournisseur 32 bits de PostgreSQL ne permet pas de préciser le port, il est fonctionnel. Par contre le vieux fournisseur pour MySQL exige un serveur local et n'est plus de fait opérationnel.

Utilisation des pilotes ODBC avec le fournisseur Microsoft OLE DB Provider for ODBC sur le serveur UBSRDS3

On a plus de succès en faisant une connexion OLE DB via les pilotes ODBC. Le fournisseur OLE DB pour ODBC fournit une interface OLE DB pour les sources de données ODBC. C'est par le biais de ce fournisseur que les requêtes distribuées peuvent accéder à toutes les données ODBC.

Exemples de sources de données générées :

  • pour MySQL, architecture 32 bits :
C:\Windows\syswow64\rundll32.exe 
"C:\Program Files (x86)\Common Files\System\Ole DB\oledb32.dll",
OpenDSLFile C:\Users\administrateur.UBS-BI\Downloads\MD.UDL

Appuyez sur les boutons Ok et OK pour quitter l'administrateur de sources ODBC 32 bits.

On obtient le rappel de la configuration de la source odbc. On appuie sur le bouton OK. On retourne dans l'éditeur de source OLE BD du fichier UDL.

Appuyez sur le bouton OK pour terminer l'édition de la source OLE DB. La chaîne de connexion générée est : Provider=MSDASQL.1;Persist Security Info=False;Password=P@ssw0rd;User ID=Etudiant01;Extended Properties="DSN=mysql_db_etudiant01;DESCRIPTION={Accès à db_etudiant01 du serveur mysql};SERVER=UBSBASE3;UID=Etudiant01;DATABASE=db_etudiant01;PORT=3306";Initial Catalog=db_etudiant01

  • pour PostgreSQL, architecture 32 bits :
C:\Windows\syswow64\rundll32.exe 
"C:\Program Files (x86)\Common Files\System\Ole DB\oledb32.dll",
OpenDSLFile C:\Users\administrateur.UBS-BI\Downloads\MD.UDL

Appuyez sur les boutons Save et OK pour quitter l'administrateur de sources ODBC 32 bits.

On obtient le rappel de la configuration de la source odbc. On appuie sur le bouton OK. On retourne dans l'éditeur de source OLE BD du fichier UDL.

Appuyez sur le bouton OK pour terminer l'édition de la source OLE DB.

La chaîne de connexion générée pour le serveur PostgreSQL 9.0 (port 5432) est : Provider=MSDASQL.1;Persist Security Info=False;Password=P@ssw0rd;User ID=Etudiant01;Extended Properties="DSN=pgsql_db_etudiant01;DATABASE=DB_Etudiant01;SERVER=UBSBASE3; PORT=5432;UID=Etudiant01;SSLmode=disable;ReadOnly=0;Protocol=7.4; FakeOidIndex=0;ShowOidColumn=0;RowVersioning=0;ShowSystemTables=0; ConnSettings=;Fetch=100;Socket=4096;UnknownSizes=0;MaxVarcharSize=255; MaxLongVarcharSize=8190;Debug=0;CommLog=0;Optimizer=0;Ksqo=1;UseDeclareFetch=0; TextAsLongVarchar=1;UnknownsAsLongVarchar=0;BoolsAsChar=1;Parse=0; CancelAsFreeStmt=0;ExtraSysTablePrefixes=dd_;;LFConversion=1;UpdatableCursors=1; DisallowPremature=0;TrueIsMinus1=0;BI=0;ByteaAsLongVarBinary=0; UseServerSidePrepare=0;LowerCaseIdentifier=0;GssAuthUseGSS=0;XaOpt=1"; Initial Catalog=DB_Etudiant01

Pour les serveurs PostgreSQL 8.4 (port 5433) et PostgreSQL 9.3 (port 5434), il suffit de changer dans le processus la valeur 5432 par la bonne valeur.

Par défaut, les infos de sécurité (le mot de passe en particulier) ne sont pas sauvegardées. Pour changer cela, on peut éditer la chaîne et mettre Persist Security Info à True, et ajouter l'attribut Password avec le mot de passe de connexion, ce que j'ai déjà fait.

Il n'existe pas de fournisseur SQLite/SpataLite/RasterLite pour OLEDB. De la même manière on peut utiliser le pilote ODBC SQLite avec le fournisseur OLE DB Provider for ODBC.

Abandon de OLE DB pour SQL Server 2014 ?

Dans ce blog, Microsoft annonce que SQL Server 2012 sera la dernière version à privilégier OLE DB plutôt que ODBC pour l'accès à SSDE (SQL Server Database Engine), considérant qu'ODBC est un standard de fait. Ainsi le composant SQL Server Native Client OLE DB provider est en voie d'obsolescence. Ceci n'affecte pas les autres fournisseurs OLE DB ou l'API OLE DB. De plus, les composants SSIS OLE DB ne sont pas obsolètes.

Dans SQL Server SSIS 2012, vous pouvez continuer à utiliser les connexions OLE DB, nécessaires pour les composants Lookup transformation et Slowly Changing Dimension transformation. Dans la version post-2012, vous serez en mesure de mettre à niveau et continuer à exploiter ces paquets sans avoir besoin de faire un travail supplémentaire pour supprimer explicitement OLE DB à partir des paquets.

Leave a comment

All comments are reviewed before being displayed.


Name (required):

E-mail (required, will not be published):

Website:

Enter value: