Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
La base de données OLE DB (Object Linking and Embedding Database) est une technologie d’accès aux données Microsoft utilisée pour connecter des applications à différentes sources de données à l’aide de fournisseurs OLE DB. La résolution des problèmes liés aux installations et validations des pilotes OLE DB peut être complexe, mais elle est essentielle pour l’interaction transparente de la base de données. Ce guide de résolution des problèmes vise à fournir des insights sur l’installation, la validation et la résolution des problèmes liés aux pilotes OLE DB.
Valider le pilote ou le fournisseur OLE DB via PowerShell
Pour vérifier si le dernier pilote OLE DB pour SQL Server est installé sur le système d’exploitation, exécutez l’applet de commande PowerShell suivante en tant qu’administrateur.
Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft", "HKLM:\SOFTWARE\Wow6432Node\Microsoft" |
Where-Object { $_.Name -like "*MSOLEDBSQL*" } |
ForEach-Object { Get-ItemProperty $_.PSPath }
Si vous avez installé la version 18 et 19 sur le système d’exploitation, la sortie peut ressembler à ceci.
InstalledVersion : 18.7.4.0
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSOLEDBSQL
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName : MSOLEDBSQL
PSProvider : Microsoft.PowerShell.Core\Registry
InstalledVersion : 19.4.1.0
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSOLEDBSQL19
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName : MSOLEDBSQL19
PSProvider : Microsoft.PowerShell.Core\Registry
InstalledVersion : 18.7.4.0
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSOLEDBSQL
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft
PSChildName : MSOLEDBSQL
PSProvider : Microsoft.PowerShell.Core\Registry
InstalledVersion : 19.4.1.0
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSOLEDBSQL19
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft
PSChildName : MSOLEDBSQL19
PSProvider : Microsoft.PowerShell.Core\Registry
Pour rechercher une installation d’interface de fournisseur OLE DB (SQLNCLI), exécutez l’applet de commande PowerShell suivante en tant qu’administrateur.
Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft", "HKLM:\SOFTWARE\Wow6432Node\Microsoft" |
Where-Object { $_.Name -like "*SQLNCLi*" } |
ForEach-Object { Get-ItemProperty $_.PSPath}
Valider le pilote OLE DB via un fichier UDL
L’une des méthodes les plus simples pour tester un pilote OLE DB consiste à utiliser un fichier UDL (Universal Data Link). Créez un fichier texte dans l’Explorateur Windows et renommez-le pour avoir l’extension de fichier .udl . Vérifiez que les extensions de fichier sont activées pour apporter la modification. Double-cliquez sur le fichier pour ouvrir une boîte de dialogue dans laquelle vous pouvez voir les fournisseurs installés et tester leurs connexions. Pour plus d’informations, consultez Tester la connectivité OLE DB à SQL Server à l’aide d’un fichier UDL.
Sélectionnez OK dans la boîte de dialogue pour confirmer la configuration.
Examiner le contenu du fichier UDL
Si vous ouvrez le fichier UDL dans un éditeur de texte, vous pouvez copier la chaîne de connexion à utiliser dans votre application. Voici deux exemples :
Provider=MSOLEDBSQL.1;Integrated Security=SSPI;Persist Security Info=False;User ID="";Initial Catalog=master;Data Source=localhost;Initial File Name="";Server SPN="";Authentication="";Access Token=""
Provider=SQLNCLI11.1;Integrated Security="";Persist Security Info=False;User ID=sa;Initial Catalog=AdventureWorks;Data Source=tcp:SQLProd01.contoso.com,1433;Initial File Name="";Server SPN=""
Valider un pilote OLE DB
La première étape de validation d’un pilote consiste à voir si le nom apparaît dans la liste des fournisseurs installés d’une boîte de dialogue UDL 64 bits ou 32 bits, comme indiqué dans la section précédente. Si ce n’est pas le cas, vous devez réinstaller le fournisseur ou consulter le fournisseur.
Vous pouvez également suivre l’emplacement du pilote dans le Registre. Le nom du pilote est un COM ProgID et vous pouvez le trouver dans HKEY_CLASSES_ROOT.
À l’aide du pilote SQL Server Native Client comme exemple, vous pouvez voir dans l’image suivante, le mappage entre progID SQLNCLI11.1 et le nom du fournisseur SQL Server Native Client 11.0.
Le ProgID des fournisseurs 32 bits et 64 bits apparaît sous la même clé.
En plus de SQLNCLI11.1, il existe également un ProgID appelé SQLNCLI11. C’est pourquoi un développeur de fournisseurs peut autoriser plusieurs versions du même fournisseur à être installées côte à côte, chacune avec un suffixe numérique différent. Le nom non numéroté est progID indépendant de la version. Les applications peuvent pointer vers ce point et être redirigées vers la dernière version du fournisseur.
À toutes les fins et intentions, ces deux noms ProgID différents doivent être équivalents. Toutefois, il peut y avoir des cas où ils ne le sont pas. Dans ce cas, les applications qui utilisent le nom indépendant de la version ne peuvent pas se connecter, mais elles peuvent se connecter si elles utilisent le ProgID versionné. La raison est que les deux entrées pointent vers des valeurs CLSID différentes, qui est la façon de trouver la DLL du fournisseur.
Il CLSID s’agit du GUID COM. L’infrastructure COM localise le GUID à partir du ProgID. Il recherche ensuite sous la clé une clé dont le HKEY_CLASSES_ROOT\CLSID GUID correspond au nom de la clé :
La InProcServer32 valeur pointe vers la DLL du fournisseur.
Pour les fournisseurs 32 bits, COM utilise le même GUID, mais le recherche sous HKEY_CLASSES_ROOT\Wow6432Node\CLSID.
Dans ce cas, le fournisseur se trouve dans le dossier SysWow64 .
Remarque
Ces exemples proviennent de machines 64 bits. Sur les machines 32 bits, il n’y a pas Wow6432Node dans le Registre.
Ces clés de Registre sont les chemins d’accès à SQL Native Client 11.0 dans l’Éditeur de Registre pour les machines 64 bits :
HKEY_CLASSES_ROOT\SQLNCLI.1\CLSIDHKEY_CLASSES_ROOT\CLSID\<guid>\InProcServer32HKEY_CLASSES_ROOT\Wow6432Node\CLSID\<guid>\InProcServer32
Voici les chemins d’accès dans l’Éditeur de Registre pour les machines 32 bits :
HKEY_CLASSES_ROOT\SQLNCLI.1\CLSIDHKEY_CLASSES_ROOT\CLSID\{guid}\InProcServer32
Prise en charge des fournisseurs non-Microsoft
La prise en charge technique des fournisseurs OLE DB non-Microsoft est limitée à s'assurer que le ProgID pointe vers un CLSID valide et que la sous-clé InProcServer32 pointe vers la DLL correcte. Si le chemin d’accès est incorrect ou si l’entrée de Registre n’existe pas, réinstallez le fournisseur ou contactez le fournisseur. Si les fichiers existent mais que les entrées du Registre ne le font pas, vous pouvez inscrire manuellement le fournisseur à l’aide REGSVR32de . Pour inscrire une DLL COM, exécutez la commande suivante à l’aide d’une invite de commandes avec élévation de privilèges :
Regsvr32 sqlncli11
S’il existe des versions 32 bits et 64 bits du fournisseur, exécutez la commande sur les deux DLL. Utilisez une invite de commandes 32 bits pour inscrire la DLL 32 bits.