Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Object Linking and Embedding Database (OLE DB) is een Microsoft-technologie voor gegevenstoegang die wordt gebruikt om toepassingen te verbinden met verschillende gegevensbronnen met behulp van OLE DB-providers. Het oplossen van problemen met OLE DB-stuurprogramma-installaties en -validaties kan complex zijn, maar is van cruciaal belang voor naadloze database-interactie. Deze gids voor probleemoplossing is bedoeld om inzicht te krijgen in de installatie, validatie en oplossing van problemen met betrekking tot OLE DB-stuurprogramma's.
OLE DB-stuurprogramma of -provider valideren via PowerShell
Als u wilt controleren of het meest recente OLE DB-stuurprogramma voor SQL Server is geïnstalleerd op het besturingssysteem, voert u de volgende PowerShell-cmdlet uit als beheerder.
Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft", "HKLM:\SOFTWARE\Wow6432Node\Microsoft" |
Where-Object { $_.Name -like "*MSOLEDBSQL*" } |
ForEach-Object { Get-ItemProperty $_.PSPath }
Als u versie 18 en 19 op het besturingssysteem hebt geïnstalleerd, ziet de uitvoer er ongeveer als volgt uit.
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
Als u wilt controleren op een INSTALLATIE van een OLE DB-providerinterface (SQLNCLI), voert u de volgende PowerShell-cmdlet uit als beheerder.
Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft", "HKLM:\SOFTWARE\Wow6432Node\Microsoft" |
Where-Object { $_.Name -like "*SQLNCLi*" } |
ForEach-Object { Get-ItemProperty $_.PSPath}
OLE DB-stuurprogramma valideren via een UDL-bestand
Een van de eenvoudigste manieren om een OLE DB-stuurprogramma te testen, is door een UDL-bestand (Universal Data Link) te gebruiken. Maak een tekstbestand in Windows Verkenner en wijzig de naam ervan in de bestandsextensie .udl . Zorg ervoor dat u bestandsextensies hebt ingeschakeld om de wijziging aan te brengen. Dubbelklik op het bestand om een dialoogvenster te openen waarin u de geïnstalleerde providers kunt zien en de bijbehorende verbindingen kunt testen. Zie OLE DB-connectiviteit met SQL Server testen met behulp van een UDL-bestand voor meer informatie.
Selecteer OK in het dialoogvenster om de configuratie te bevestigen.
De inhoud van het UDL-bestand onderzoeken
Als u het UDL-bestand opent in een teksteditor, kunt u de verbindingsreeks kopiëren die u in uw toepassing wilt gebruiken. Hieronder vindt u twee voorbeelden:
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=""
Een OLE DB-stuurprogramma valideren
De eerste stap voor het valideren van een stuurprogramma is om te zien of de naam wordt weergegeven in de lijst met geïnstalleerde providers van een 64-bits of 32-bits UDL-dialoogvenster, zoals wordt weergegeven in de vorige sectie. Als dit niet het probleem is, moet u de provider opnieuw installeren of de leverancier raadplegen.
U kunt ook de locatie van het stuurprogramma in het register traceren. De naam van het stuurprogramma is een COM ProgID en u vindt deze in HKEY_CLASSES_ROOT.
Met het stuurprogramma sql Server Native Client als voorbeeld ziet u in de volgende afbeelding de toewijzing tussen de ProgID SQLNCLI11.1 en de providernaam SQL Server Native Client 11.0.
De ProgID van zowel 32-bits als 64-bits providers wordt onder dezelfde sleutel weergegeven.
Naast SQLNCLI11.1 is er ook een ProgID genaamd SQLNCLI11. De reden hiervoor is dat een providerontwikkelaar kan toestaan dat meerdere versies van dezelfde provider naast elkaar worden geïnstalleerd, elk met een ander numeriek achtervoegsel. De niet-genummerde naam is de versie-onafhankelijke ProgID. Toepassingen kunnen hier naar verwijzen en worden omgeleid naar de nieuwste versie van de provider.
Voor alle intenties en doeleinden moeten deze twee verschillende ProgID-namen equivalent zijn. Er kunnen echter gevallen zijn waarin dit niet het geval is. In dergelijke gevallen kunnen toepassingen die gebruikmaken van de versie-onafhankelijke naam geen verbinding maken, maar ze kunnen wel verbinding maken als ze de geversiede ProgID gebruiken. De reden hiervoor is dat de twee vermeldingen verwijzen naar verschillende CLSID-waarden . Dit is hoe u de DLL van de provider kunt vinden.
Dit CLSID is de COM-GUID. De COM-infrastructuur zoekt de GUID van de ProgID. Vervolgens wordt onder de HKEY_CLASSES_ROOT\CLSID sleutel gezocht naar een sleutel waarvan de GUID overeenkomt met de sleutelnaam:
De InProcServer32 waarde verwijst naar het DLL-bestand van de provider.
Voor 32-bits providers gebruikt COM dezelfde GUID, maar zoekt deze onder HKEY_CLASSES_ROOT\Wow6432Node\CLSID.
In dit geval bevindt de provider zich in de map SysWow64 .
Notitie
Deze voorbeelden zijn afkomstig van 64-bits machines. Op 32-bits computers bevindt zich geen Wow6432Node in het register.
Deze registersleutels zijn de paden naar SQL Native Client 11.0 in de Register-editor voor 64-bits machines:
HKEY_CLASSES_ROOT\SQLNCLI.1\CLSIDHKEY_CLASSES_ROOT\CLSID\<guid>\InProcServer32HKEY_CLASSES_ROOT\Wow6432Node\CLSID\<guid>\InProcServer32
Dit zijn de paden in de Register-editor voor 32-bits computers:
HKEY_CLASSES_ROOT\SQLNCLI.1\CLSIDHKEY_CLASSES_ROOT\CLSID\{guid}\InProcServer32
Ondersteuning voor niet-Microsoft-providers
Technische ondersteuning voor niet-Microsoft OLE DB-providers is beperkt tot het valideren van de ProgID-punten naar een geldige CLSID en dat de InProcServer32 subsleutel verwijst naar de juiste DLL. Als het pad onjuist is of de registervermelding niet bestaat, installeert u de provider opnieuw of neemt u contact op met de leverancier. Als de bestanden bestaan maar de registervermeldingen niet, kunt u de provider handmatig registreren met behulp van REGSVR32. Als u een COM DLL wilt registreren, voert u de volgende opdracht uit bij een opdrachtprompt met verhoogde bevoegdheid:
Regsvr32 sqlncli11
Als er zowel 32-bits als 64-bits versies van de provider zijn, voert u de opdracht uit op beide DLL's. Gebruik een 32-bits opdrachtprompt om de 32-bits DLL te registreren.