Dela via


Installationskontroll av OLE DB-drivrutin

Objektlänkning och inbäddningsdatabas (OLE DB) är en Microsoft-dataåtkomstteknik som används för att ansluta program till olika datakällor med OLE DB-leverantörer. Felsökning av ole db-drivrutinsinstallationer och valideringar kan vara komplext, men är avgörande för sömlös databasinteraktion. Den här felsökningsguiden syftar till att ge insikter om installation, validering och lösning av problem som rör OLE DB-drivrutiner.

Om UDL-filer

Ett av de enklaste sätten att testa en OLE DB-provider är via UDL-filen (Universal Data Link). Skapa valfri textfil i Utforskaren och byt namn på den till att ha en . UDL-filnamnstillägg . Kontrollera att filnamnstillägg är aktiverade för att göra ändringen. Mer information finns i Testa OLE DB-anslutning till SQL Server med hjälp av en UDL-fil

Dubbelklicka på filen för att öppna en dialogruta där du kan se de installerade leverantörerna och testa deras anslutningar.

Skärmbild som visar hur du använder UDL-filen för att testa OLE DB-providern.

Kommentar

Om du väljer OK i dialogrutan kan du öppna UDL-filen i Anteckningar för att se anslutningssträng du kan använda i ditt program. Till exempel:

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=""

UDL-filgränssnittet tillhandahålls av OLEDB32.DLL och finns i RUNDLL32.DLL.

  • Använd följande kommando för 32-bitarssystem eller för 64-bitarsprovidrar i 64-bitarssystem:

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

  • Använd följande kommando för 32-bitarsprovidrar i 64-bitarssystem:

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

. UDL-filnamnstillägget mappas till det första kommandot. För det andra kan du förenkla saker genom att köra en 32-bitars kommandotolk och sedan köra START C:\TEMP\TEST.UDL för att testa 32-bitarsproviders. Ännu enklare är att mappa . UDL32-filnamnstillägget till 32-bitarskommandot.

32-bitars .udl32-filnamnsmappning

Om du ofta använder 32-bitarsproviders kan du mappa filnamnstillägget .udl32 för att starta 32-bitars UDL-dialogrutan. Följ de här stegen:

  1. Kopiera skriptet till Anteckningar och spara det som 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. Dubbelklicka på filen .reg och sedan kan du skapa en fil med filnamnstillägget .udl32 . Till exempel test.udl32. Och den startar 32-bitars UDL-dialogrutan. Till exempel:

    Skärmbild som visar ett exempel på en 32-bitars UDL-dialogruta.

Verifiera en OLE DB-provider

Det första steget för att verifiera en provider är att se om namnet visas i listan över installerade leverantörer av en 64-bitars eller 32-bitars UDL-dialogruta, som du ser ovan. Om den inte gör det måste du installera om providern eller kontakta leverantören.

Du kan också spåra drivrutinsplatsen i registret. Drivrutinsnamnet är ett COM ProgID och du hittar det i HKEY_CLASSES_ROOT.

I följande bild kan du se mappningen mellan ProgID-SQLNCLI11.1 och providernamnet SQL Server Native Client 11.0.

Skärmbild som visar mappningen mellan ProgID-SQLNCLI11.1 och providernamnet SQL Server Native Client 11.0.

ProgID för både 32- och 64-bitarsprovidrar visas under den här nyckeln.

Förutom SQLNCLI11.1 finns det även ett ProgID som heter SQLNCLI11. Anledningen till detta är att en providerutvecklare kan tillåta att flera versioner av samma provider installeras sida vid sida, var och en med ett annat numeriskt suffix. Det onumrerade namnet är det versionsoberoende ProgID. Program kan peka på detta och omdirigeras till den senaste versionen av providern.

För alla avsikter och syften bör dessa två olika ProgID-namn vara likvärdiga. Det har dock funnits några fall där de inte var det. Program som använder det versionsoberoende namnet kan inte ansluta, men de kan ansluta om de använder det versionshanterade ProgID:t. Anledningen är att de två posterna pekar på olika CLSID-värden , vilket är hur du hittar providerns DLL.

Skärmbild som visar hur du hittar providerdllen med det versionshanterade ProgId.

CLSID är COM GUID. COM-infrastrukturen letar upp GUID:et från ProgID. Sedan letar den HKEY_CLASSES_ROOT\CLSID under nyckeln efter en nyckel vars GUID matchar nyckelnamnet:

Skärmbild som visar hur du hittar ett GUID från ProgId under HKEY_CLASSES_ROOT\CLSID.

Värdet InProcServer32 pekar på providerns DLL.

För 32-bitarsprovidrar använder COM samma GUID men söker efter det under HKEY_CLASSES_ROOT\Wow6432Node\CLSID.

Skärmbild som visar att providern finns i mappen SysWow64.

I det här fallet finns providern i mappen SysWow64 .

Kommentar

De här exemplen kommer från 64-bitarsdatorer. På 32-bitarsdatorer finns det inga Wow6432Node i registret.

Det här är sökvägarna till SQL Native Client 11.0 i Registereditorn för 64-bitars datorer:

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

Det här är sökvägarna i Registereditorn för 32-bitarsdatorer:

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

Stöd för tredjepartsleverantörer

Stöd för OLE DB-leverantörer från tredje part är begränsat till validering av ProgID-punkterna till ett giltigt CLSID och att undernyckeln InProcServer32 pekar på rätt DLL. Om sökvägen är felaktig eller om registerposten inte finns installerar du om providern eller kontaktar leverantören. Om filerna finns men inte registerposterna kan du registrera providern manuellt med hjälp av REGSVR32. Om du vill registrera en COM DLL kör du följande kommando i en upphöjd kommandotolk:

Regsvr32 sqlncli11

Skärmbild som visar ett administratörskommando för att registrera en COM DLL.

Om det finns både 32-bitars- och 64-bitarsversioner av providern kör du kommandot mot båda DLL:er. Använd en 32-bitars kommandotolk för att registrera 32-bitars DLL.

Mer information