Différences majeures de version du pilote Microsoft ODBC pour SQL Server

Cet article décrit les changements marquants entre le pilote ODBC 18 de Microsoft pour SQL Server et la version 17.

La plupart des applications qui passent de la version 17 à la version 18 sont affectées par un seul changement : les connexions sont chiffrées par défaut. Si votre application cesse de se connecter après la mise à jour, lisez d’abord « Comportement de chiffrement par défaut ».

Récapitulatif des modifications

Area Version 17 Version 18 et versions ultérieures
Réglage par défaut Encrypt no yes
Encrypt Valeurs acceptées yes, no yes, no, Mandatory, Optional, Strict
Modes de chiffrement De temps en temps Éteint, allumé ou strict
Validation de certificat de serveur Cela ne se produit que si vous demandez le chiffrement Cela se produit par défaut, car le chiffrement est activé par défaut
Mots-clés de chaîne de connexion Ensemble de base Ensemble de base plus nouveaux mots-clés

Modifications du chiffrement

Comportement de chiffrement par défaut

Dans la version 17, les connexions ne sont chiffrées que si vous demandez le chiffrement ou que le serveur l’exige. Dans la version 18 et les versions ultérieures, les connexions sont chiffrées par défaut.

Parce que le pilote valide le certificat serveur chaque fois qu’il chiffre une connexion, une application qui se connecte à un serveur avec un certificat auto-signé ou autrement non fiable se connecte avec succès avec la version 17 et échoue avec la version 18. L’échec est une erreur de validation de certificat, et non une erreur d’authentification.

Vous avez trois façons de le résoudre, listées du plus au moins sécurisé :

  • Installez un certificat sur le serveur auquel le client a confiance. Cette option est la recommandée, et c’est la seule qui conserve à la fois le chiffrement et la validation.
  • Gardez le chiffrement activé et indiquez au pilote quel nom valider, en définissant HostNameInCertificate ou ServerCertificate.
  • Désactivez le chiffrement pour restaurer la version 17 par défaut, en ajoutant Encrypt=no à la chaîne de connexion.

Avertissement

Le réglage TrustServerCertificate=yes maintient la connexion chiffrée mais désactive la validation du certificat, ce qui laisse la connexion ouverte aux attaques adversaires intermédiaires. Privilégiez un certificat fiable.

Chiffrer les valeurs

La version 17 n’accepte que yes et no. La version 18 et les versions ultérieures acceptent ces valeurs et en ajoutent trois autres :

Value Équivalent à Comportement
Mandatory yes La connexion est chiffrée.
Optional no La connexion n’est chiffrée que si le serveur l’exige.
Strict None La connexion utilise le chiffrement TDS 8.0.

Strict il n’existe pas d’équivalent version 17. C’est la seule valeur qui sélectionne TDS 8.0, où le chiffrement est négocié avant l’échange de connexion plutôt que pendant celui-ci.

Restaurez le comportement de chiffrement de la version 17

Pour restaurer le comportement par défaut de la version 17, définissez Encrypt explicitement :

Driver={ODBC Driver 18 for SQL Server};Server=<server>;Database=<database>;UID=<user_id>;PWD=<password>;Encrypt=no;

Définir explicitement la valeur est bénéfique même sur la version 17, car cela fait que la chaîne de connexion se comporte de la même manière sur les deux versions.

Nouveaux mots-clés pour chaîne de connexion

La version 18 ajoute les mots-clés suivants pour chaîne de connexion, que la version 17 ne reconnaît pas :

Mot clé Purpose
ConcatNullYieldsNull Contrôle si concaténer une valeur nulle donne nulle.
GetDataExtensions Contrôle quelles SQLGetData extensions le pilote permet.
HostNameInCertificate Spécifie le nom d’hôte à valider dans le certificat TLS du serveur.
IpAddressPreference Spécifie la famille d’adresses IP que le pilote essaie en premier.
LongAsMax Associe les types de données longs à leurs max équivalents.
RetryExec Configure les règles de réessai pour les requêtes échouées.
ServerCertificate Spécifie le chemin vers un fichier de certificat pour valider le serveur.

Des mots-clés individuels ont été introduits dans différentes versions de la version 18. Pour la version qui introduisait chaque mot-clé, et pour la référence complète des mots-clés, voir ODBC DSN et mots-clés de chaîne de connexion.