Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
- Incluez l’en-tête mis à jour
msoledbsql.hdans votre projet. - Pour
IDBInitialize: Aucune modification n’est nécessaire (CLSID mis à jour dans l’en-tête). - Pour
IDataInitialize: PasserProvider=MSOLEDBSQLàProvider=MSOLEDBSQL19. - 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.
Alternatives recommandées
| 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=MSOLEDBSQLconnexion versProvider=MSOLEDBSQL19. - Incluez l’en-tête mis à jour
msoledbsql.hsi vous utilisezIDBInitializele CLSID.
Contenu connexe
- Microsoft OLE DB Driver pour SQL Server
- Utilisation de mots clés de chaîne de connexion avec OLE DB Driver pour SQL Server
- Validation du chiffrement et du certificat dans OLE DB
- Configuration UDL (Universal Data Link)
- Boîte de dialogue Connexion SQL Server (OLE DB)
- Propriétés d'initialisation et d'autorisation
- Paramètres du Registre