Delen via


Installatiecontrole ole DB-stuurprogramma

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.

Over UDL-bestanden

Een van de eenvoudigste manieren om een OLE DB-provider te testen, is via het UDL-bestand (Universal Data Link). Maak een tekstbestand in Windows Verkenner en wijzig de naam ervan in een . UDL-bestandsextensie . Zorg ervoor dat u bestandsextensies hebt ingeschakeld om de wijziging aan te brengen. Zie OLE DB-connectiviteit met SQL Server testen met behulp van een UDL-bestand voor meer informatie

Dubbelklik op het bestand om een dialoogvenster te openen waarin u de geïnstalleerde providers kunt zien en de bijbehorende verbindingen kunt testen.

Schermopname van het gebruik van het UDL-bestand om de OLE DB-provider te testen.

Notitie

Als u OK selecteert in het dialoogvenster, kunt u het UDL-bestand openen in Kladblok om de verbindingsreeks te zien die u in uw toepassing kunt gebruiken. Bijvoorbeeld:

Provider=SQLNCLI11.1;Integrated Security="";Persist Security Info=False;User ID=sa;Initial Catalog=northwind;Data Source=tcp:SQLProd01.contoso.com,1433;Initial File Name="";Server SPN=""

De gebruikersinterface van het UDL-bestand wordt geleverd door OLEDB32.DLL en gehost in RUNDLL32.DLL.

  • Gebruik de volgende opdracht voor 32-bits systemen of voor 64-bits providers op 64-bits systemen:

    Rundll32.exe "C:\Program Files\Common Files\System\OLE DB\oledb32.dll",OpenDSLFile C:\test.udl

  • Gebruik de volgende opdracht voor 32-bits providers op 64-bits systemen:

    C:\Windows\SysWOW64\Rundll32.exe C:\PROGRA~2\COMMON~1\System\OLEDB~1\oledb32.dll,OpenDSLFile C:\test.udl32

De . De UDL-bestandsextensie wordt toegewezen aan de eerste opdracht. Voor de tweede kunt u dingen vereenvoudigen door een 32-bits opdrachtprompt uit te voeren en vervolgens uit te voeren START C:\TEMP\TEST.UDL om 32-bits providers te testen. Nog eenvoudiger is om de kaart te maken. UDL32-bestandsextensie naar de 32-bits opdracht.

32-bits toewijzing van bestandsextensie .udl32

Als u vaak 32-bits providers gebruikt, kunt u de bestandsextensie .udl32 toewijzen om het 32-bits UDL-dialoogvenster te starten. Volg vervolgens deze stappen:

  1. Kopieer het script naar Kladblok en sla het op als udl32.reg.

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\.UDL32]
    @="ft000001"
    
    [HKEY_CLASSES_ROOT\ft000001]
    @="Microsoft Data Link 32"
    "BrowserFlags"=dword:00000008
    "EditFlags"=dword:00000000
    
    [HKEY_CLASSES_ROOT\ft000001\shell]
    @="open"
    
    [HKEY_CLASSES_ROOT\ft000001\shell\open]
    
    [HKEY_CLASSES_ROOT\ft000001\shell\open\command]
    @="C:\\Windows\\SysWOW64\\Rundll32.exe C:\\PROGRA~2\\COMMON~1\\System\\OLEDB~1\\oledb32.dll,OpenDSLFile %1"
    
    [HKEY_CLASSES_ROOT\ft000001\shell\open\ddeexec]
    
  2. Dubbelklik op het .reg-bestand en vervolgens kunt u een bestand maken met de bestandsextensie .udl32 . Bijvoorbeeld test.udl32. Het 32-bits UDL-dialoogvenster wordt geopend. Bijvoorbeeld:

    Schermopname van een voorbeeld van een 32-bits UDL-dialoogvenster.

Een OLE DB-provider valideren

De eerste stap voor het valideren van een provider 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 hierboven wordt weergegeven. 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.

In de volgende afbeelding ziet u de toewijzing tussen de ProgID SQLNCLI11.1 en de providernaam SQL Server Native Client 11.0.

Schermopname van 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 deze 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 waren echter een paar gevallen waar ze niet waren. Toepassingen die de versie-onafhankelijke naam gebruiken, kunnen 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.

Schermopname laat zien hoe u de dll van de provider kunt vinden met behulp van de geversiede ProgId.

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:

Schermopname laat zien hoe u een GUID van ProgId vindt onder HKEY_CLASSES_ROOT\CLSID.

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.

Schermopname van de provider bevindt zich in de map SysWow64.

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.

Dit zijn de paden naar SQL Native Client 11.0 in de Register-editor voor 64-bits machines:

  • HKEY_CLASSES_ROOT\SQLNCLI.1\CLSID
  • HKEY_CLASSES_ROOT\CLSID\<guid>\InProcServer32
  • HKEY_CLASSES_ROOT\Wow6432Node\CLSID\<guid>\InProcServer32

Dit zijn de paden in de Register-editor voor 32-bits computers:

  • HKEY_CLASSES_ROOT\SQLNCLI.1\CLSID
  • HKEY_CLASSES_ROOT\CLSID\{guid}\InProcServer32

Ondersteuning voor externe providers

Ondersteuning voor EXTERNE OLE DB-providers is beperkt tot het valideren van de ProgID verwijst 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

Schermopname van een beheerdersopdracht voor het registreren van een COM DLL.

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.

Meer informatie