Partager via


Principales différences de version

Cet article décrit les changements cassants entre Microsoft OLE DB Driver 19 pour SQL Server et les versions antérieures.

Conseil / Astuce

MSOLEDBSQL19 (Microsoft OLE DB Driver 19 pour SQL Server) est le pilote OLE DB recommandé actuel. Il prend en charge les fonctionnalités de sécurité TDS 8.0 et modernes. La version 19.2.0+ prend également en charge TLS 1.3. Utilisez-la Provider=MSOLEDBSQL19 dans vos chaînes de connexion.

Synthèse des modifications

Area Version 18 et versions antérieures Version 19+
Paramètre de chiffrement par défaut (Encrypt) no (aucun chiffrement ou serveur ne peut nécessiter le chiffrement) Mandatory (chiffrement requis)
Encrypt type de propriété VT_BOOL VT_BSTR
Encrypt valeurs valides no/yes no/yes/true/false/Optional/Mandatory/Strict
Validation de certificat Ignoré lorsque les ensembles de clients sont ignorés Encrypt=no Toujours évalué lorsque le chiffrement se produit
Nom du pilote MSOLEDBSQL MSOLEDBSQL19
CLSID MSOLEDBSQL_CLSID (hérité) MSOLEDBSQL_CLSID (mis à jour dans l’en-tête)

Avertissement

L’authentification ActiveDirectoryPassword est déconseillée. Si vous migrez de la version 18 vers 19 et que vous utilisez Authentication=ActiveDirectoryPassword, envisagez de migrer vers une méthode d’authentification plus sécurisée. Consultez les méthodes d’authentification déconseillées pour connaître les alternatives.

Modifications des propriétés de chiffrement

Chiffrer la modification du type de propriété

La propriété SSPROP_INIT_ENCRYPT du pilote passe de VT_BOOL à VT_BSTR.

Chaîne de connexion Valeurs de la version 18 Valeurs de version 19
Fournisseur: Encrypt no/yes no/yes/true/false/Optional/Mandatory/Strict
IDataInitialize : Use Encryption for Data true/false no/yes/true/false/Optional/Mandatory/Strict

Mappage des valeurs :

Mode Valeurs équivalentes Comportement
Optional no, false Non chiffré, sauf si le serveur l’exige
Mandatory (valeur par défaut) yes, true Connexion chiffrée requise
Strict (aucun équivalent) Chiffrement TDS 8.0 ; nécessite SQL Server 2022+

Conseil / Astuce

À compter de la version 19.2.0, les connexions TDS 8.0 peuvent utiliser TLS 1.3 lors de la connexion à SQL Server 2022 ou version ultérieure. La ServerCertificate propriété a également été ajoutée dans cette version. Pour plus d’informations, consultez Prise en charge de TLS 1.3.

Pour la compatibilité descendante, la version 19 accepte toutes les valeurs de la version 18 (yes/no) en plus des nouvelles valeurs ().Optional/Mandatory/Strict

Comportement de chiffrement par défaut

Version Par défaut Résultat
18 et versions antérieures no Connexions non chiffrées par défaut
19+ Mandatory Connexions chiffrées par défaut

Pour restaurer le comportement de la version 18, ajoutez l’une de ces options à votre chaîne de connexion :

  • Fournisseur: Encrypt=Optional;
  • IDataInitialize : Use Encryption for Data=Optional;

Comportement de validation de certificat

Scénario Version 18 Version 19+
Jeux Encrypt=node clients , le serveur ne force pas le chiffrement Aucune validation Aucune validation
Jeux Encrypt=node clients , serveur force le chiffrement Trust Server Certificate Ignoré Trust Server Certificate Évalué
Ensembles de clients Encrypt=yes Trust Server Certificate Évalué Trust Server Certificate Évalué

Notes de compatibilité

Les clients de la version 19 utilisant les paramètres par défaut ne parviennent pas à se connecter lorsque le serveur force le chiffrement et utilise un certificat non approuvé. Mettez à jour votre Trust Server Certificate paramètre ou utilisez un certificat approuvé.

TrustServerCertificate n’a pas été supprimé dans la version 19. L’option fonctionne toujours. La version 18 a ignoré ce paramètre lorsqu’il Encrypt a été défini nosur , même lorsque le chiffrement forcé du serveur. La version 19 est désormais évaluée dans tous les scénarios TrustServerCertificate chiffrés.

Le pilote version 19, avant la version 19.4.1, a rencontré un problème de programme d’installation qui pouvait définir l’option no de TrustServerCertificate Registre sur les systèmes qui avaient précédemment installé v18. Lorsque ce problème s’est produit, le pilote utilise le paramètre de Registre plus sécurisé, ce qui peut rendre les options de chaîne de connexion semblent sans effet. Ce problème a été résolu dans la version 19.4.1. Une nouvelle installation de v19 (sans v18 présente) a toujours correctement défini l’option yesde Registre sur . Pour plus d’informations, voir Paramètres du registre.

Le format de mot clé diffère par interface :

  • Les chaînes de connexion du fournisseur n’utilisent aucun espace : TrustServerCertificate=yes;
  • Les chaînes de connexion IDataInitialize utilisent des espaces : Trust Server Certificate=yes;

Pour plus d’informations, consultez Chiffrement et validation de certificat dans OLE DB.

Paramètres de Registre pour Forcer le chiffrement du protocole

Le paramètre de Registre Force Protocol Encryption utilise des valeurs numériques qui correspondent aux modes de chiffrement :

Valeur de Registre Mode de chiffrement Descriptif
0 Optional Chiffrement uniquement si le serveur l’exige
1 Mandatory Chiffrement requis
2 Strict Chiffrement TDS 8.0

Le pilote utilise l’option la plus sécurisée entre le paramètre de Registre et la propriété de connexion. Pour connaître les emplacements des clés de Registre, consultez les paramètres du Registre.

Modifications du nom du pilote

La version 19 prend en charge l’installation côte à côte avec la version 18. Le nom du pilote inclut le numéro de version principale pour la différenciation.

Interface Version 18 Version 19
Mot clé du fournisseur MSOLEDBSQL MSOLEDBSQL19
Constante CLSID MSOLEDBSQL_CLSID MSOLEDBSQL_CLSID (mis à jour dans msoledbsql.h)
Nom d’affichage de l’interface utilisateur Microsoft OLE DB Driver pour SQL Server Microsoft OLE DB Driver 19 pour SQL Server

Étapes de migration

  1. Incluez l’en-tête mis à jour msoledbsql.h dans votre projet.
  2. Pour IDBInitialize: Aucune modification n’est nécessaire (CLSID mis à jour dans l’en-tête).
  3. Pour IDataInitialize: Passer Provider=MSOLEDBSQL à Provider=MSOLEDBSQL19.
  4. Pour les outils d’interface utilisateur (SSMS, propriétés de liaison de données) : sélectionnez Microsoft OLE DB Driver 19 pour SQL Server.

Exemples de chaîne de connexion

Version 18 (avant) :

Provider=MSOLEDBSQL;Server=myserver;Database=mydb;Trusted_Connection=yes;

Version 19 (après) :

Provider=MSOLEDBSQL19;Server=myserver;Database=mydb;Trusted_Connection=yes;

Version 19 avec des paramètres de chiffrement explicites :

Provider=MSOLEDBSQL19;Server=myserver;Database=mydb;Encrypt=Mandatory;TrustServerCertificate=no;

Version 19 avec chiffrement strict (TDS 8.0) :

Provider=MSOLEDBSQL19;Server=myserver;Database=mydb;Encrypt=Strict;ServerCertificate=C:\certs\server.cer;

Nouvelles propriétés de la version 19

La version 19 introduit des propriétés pour une validation améliorée des certificats avec Strict le mode de chiffrement.

HostNameInCertificate (v19.0.0+)

Spécifie le nom d’hôte à valider par rapport au certificat TLS/SSL du serveur. Utilisez cette propriété lorsque le nom du serveur dans la chaîne de connexion diffère du nom commun du certificat (CN) ou de l’autre nom de l’objet (SAN).

Interface Propriété
Mot clé du fournisseur HostNameInCertificate
Mot clé IDataInitialize Host Name In Certificate
Propriété OLE DB SSPROP_INIT_HOST_NAME_CERTIFICATE

Note

Cette propriété est ignorée quand Trust Server Certificate elle est activée. Quand Encrypt=Strict, le certificat est toujours validé.

ServerCertificate (v19.2.0+)

Spécifie le chemin d’accès à un fichier de certificat (PEM, DER ou CER) pour la correspondance exacte des certificats. Le pilote compare ce certificat au certificat du serveur pendant la négociation TLS.

Interface Propriété
Mot clé du fournisseur ServerCertificate
Mot clé IDataInitialize Server Certificate
Propriété OLE DB SSPROP_INIT_SERVER_CERTIFICATE

Important

ServerCertificate ne peut être utilisé que lorsque Encrypt=Strict. Une tentative d’utilisation avec Mandatory ou Optional de chiffrement entraîne une erreur de connexion.

Méthodes d’authentification déconseillées

Mot de passe Active Directory

La ActiveDirectoryPassword méthode d’authentification (authentification par mot de passe Microsoft Entra ID) est déconseillée. Cette authentification est basée sur l’octroi roPC (Resource Owner Password Credentials) OAuth 2.0, qui est incompatible avec l’authentification multifacteur (MFA) et pose des risques de sécurité.

Avertissement

Microsoft s’éloigne de ce flux d’authentification à haut risque pour protéger les utilisateurs contre les attaques malveillantes. Prévoyez de migrer vers une méthode d’authentification plus sécurisée avant la suppression de cette option. Pour plus d’informations, consultez Planification de l’authentification multifacteur obligatoire pour Azure.

Scénario Authentification recommandée Mot clé de chaîne de connexion
Contexte utilisateur interactif Authentification multifacteur Authentication=ActiveDirectoryInteractive
Application s’exécutant sur Azure Identité managée Authentication=ActiveDirectoryMSI
Service/démon sans utilisateur Principal de service Authentication=ActiveDirectoryServicePrincipal

Pour plus d’informations, consultez Utiliser l’ID Microsoft Entra.

Résolution des problèmes

Échec de la connexion avec l’erreur de validation de certificat

Symptôme : la connexion échoue avec une erreur de validation de certificat ou un message de certificat non approuvé.

Cause : la version 19 est par défaut Encrypt=Mandatory, ce qui nécessite un certificat de serveur valide. La version 18 est par Encrypt=no défaut (non chiffrée).

Solutions :

  • Recommandé : installez un certificat approuvé sur le serveur.
  • Développement uniquement : Ajouter TrustServerCertificate=yes; à votre chaîne de connexion (non recommandé pour la production).
  • Secours : Ajouter Encrypt=Optional; pour restaurer le comportement de la version 18 (réduit la sécurité).

La connexion échoue avec « Le certificat de serveur ne peut être utilisé qu’avec un chiffrement strict »

Symptôme : la connexion échoue lorsque vous utilisez la ServerCertificate propriété.

Cause : La ServerCertificate propriété nécessite Encrypt=Strict.

Solution : supprimez ServerCertificate votre chaîne de connexion ou passez à Encrypt=Strict;.

L’application reçoit VT_BOOL erreur lors de la définition de la propriété Encrypt

Symptôme : la définition SSPROP_INIT_ENCRYPT d’une valeur booléenne échoue.

Cause : la version 19 a changé le type de propriété de VT_BOOL vers VT_BSTR.

Solution : utilisez des valeurs de chaîne ("Mandatory", , "Optional", "Strict""yes", "no") au lieu de valeurs booléennes.

Fournisseur introuvable après la mise à niveau

Symptôme : l’application échoue avec l’erreur « Fournisseur introuvable » ou une erreur similaire.

Cause : la version 19 utilise un autre nom de fournisseur (MSOLEDBSQL19).

Solutions :

  • Mettez à jour votre chaîne de Provider=MSOLEDBSQL connexion vers Provider=MSOLEDBSQL19.
  • Incluez l’en-tête mis à jour msoledbsql.h si vous utilisez IDBInitialize le CLSID.