Pouvoir configurer une connexion vers SQL Server 2019 avec Talend 8 en utilisant l’authentification Windows peut relever de la course d’obstacle vues les informations contradictoires ou incomplètes sur le web à ce sujet. J’ai réussi à y parvenir et je vous explique comment faire.


Partager l’article Talend et authentification Windows pour accéder à SQL Server sur les réseaux sociaux


Contexte

Dans le cadre de mon travail, je devais avoir des jobs Talend (version 8, Java 11) qui devaient se connecter à une base de données SQL Server (version 2019). Jusqu’ici, aucune difficulté majeure. Une connexion classique TCP/IP avec login/mot de passe SQL.

Mais un jour, la DSI de cette entreprise changea quelques protocoles, notamment la connexion à la base de données, qui devaient dorénavant s’effectuer via l’authentification Windows uniquement. J’avais déjà vu que cela était possible avec Talend mais je ne l’avais pas encore testé en condition réelle.

Solution

La solution passe par plusieurs actions. Mais sur le net, difficile d’avoir une information claire et fonctionnelle. Au bout de plusieurs recherches et essais, j’ai fini par avoir une solution opérationnelle.

Première action : récupérer les drivers JDBC sur le site de Microsoft

Le drivers JDBC, sous la forme d’un fichier ZIP est proposé à cette adresse par Microsoft : https://learn.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15

Cette archive servira à deux choses :

  • avoir une DLL nécessaire pour l’authentification,
  • avoir le fichier JAR qui sera utilisé par Talend pour se connecter à la DB (plus à jour que Talend/Java 11)

Une fois téléchargée, décompressez-la, peut importe l’endroit.

Deuxième action : déterminer la version Java (x86 ou x64)

Dans PowerShell, identifiez la version de Java (x86 ou x64) via :

java -version

Attention ! ce n’est pas parce que vous êtes sur un Windows 64 bit que la version java installée est 64 bit ! Vérifiez avant !

En fonction de cela, dans le dossier auth de l’archive, sélectionnez la bonne DLL en allant dans le bon sous-répertoire en fonction de votre version java (x86 ou x64) vue juste avant.

Troisième action : mise en place de la DLL

C’est là qu’on a des informations contradictoires sur le net à ce sujet.

En étant administrateur Windows, copiez cette DLL dans le répertoire bin de votre installation Java (et non pas dans System32 de Windows comme on peut le trouver dans certaines solutions).

Dans mon cas, j’ai fait ainsi :

cp C:\Users\Michel\Downloads\sqljdbc_12.2.0.0_fra\sqljdbc_12.2\fra\auth\x64\mssql-jdbc_auth-12.2.0.x64.dll C:\Program Files\Java\jdk-11.0.15.1\bin\

Adaptez cela en fonction de votre environnement et de l’archive téléchargée. Ayant pris une archive avec le traduction en français, j’ai un dossier fra, mais pour d’autres langues vous aurez par exemple enu pour Universal English ou encore d’autres possibilités. Ne copiez pas à l’aveugle ma commande !

Quatrième action : utiliser le JAR dans Talend

Si vous ne passez pas par cette étape, vous aurez probablement des erreurs Java lors de la compilation de vos jobs.

Affichez dans Talend l’onglet listant les modules (via Fenête > Montrer la vue).

Dans la liste des modules Talend, tapez mssql-jdbc.jar dans la zone de recherche afin de rechercher les éléments concernés par ce JAR.

Ensuite, dans la liste des modules, sélectionnez-en un au hasard, cliquez sur le bouton de modification (en bout de ligne). Dans la fenêtre apparaissant, modifiez le champ URI maven personnalisé par l’URL de MSSQL JDBC que vous trouverez sur Maven. Ici, c’est https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc/12.2.0.jre11. Talend modifie l’URL automatiquement afin d’avoir une URI Maven compatible. Validez.

Si vous devez revenir en arrière, il suffit de refaire les manipulations pour revenir à la popup et vous décocher la case URI MVN personnalisée.

Cinquième action : utiliser le bon driver

Ensuite, dans Talend, pour une connexion DB devant utiliser l’identification intégrée de Windows, il faut sélectionner le fournisseur JDBC Microsoft et non plus JTDS Open source, puis il faut laisser les champs login/mot de passe vides, mais vous devrez spécifier la chaîne de caractères suivante dans Paramètres supplémentaires JDBC :

"integratedSecurity=true;trustServerCertificate=true"

Un test de votre connexion devrait fonctionner et s’achever sans erreur.

Conclusion

Si vous avez été dans mon cas, à tenter de rendre fonctionnelle une connection vers SQL Server 2019 à l’aide de Talend 8 avec Java 11, et que cela été infructueux, alors j’espère que mon article vous aura servi dans votre cas.