Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
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:
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]
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:
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.
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.
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:
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
.
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
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.