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.

Verifiera OLE DB-drivrutin eller -provider via PowerShell

Kontrollera om den senaste OLE DB-drivrutinen för SQL Server är installerad på operativsystemet genom att köra följande PowerShell-cmdlet som administratör.

Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft", "HKLM:\SOFTWARE\Wow6432Node\Microsoft" |
    Where-Object { $_.Name -like "*MSOLEDBSQL*" } |
    ForEach-Object { Get-ItemProperty $_.PSPath }

Om du har version 18 och 19 installerat på operativsystemet kan utdata se ut ungefär så här.

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

Om du vill söka efter en INSTALLATION av OLE DB-providergränssnittet (SQLNCLI) kör du följande PowerShell-cmdlet som administratör.

Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft", "HKLM:\SOFTWARE\Wow6432Node\Microsoft" |
   Where-Object { $_.Name -like "*SQLNCLi*" } |
   ForEach-Object {   Get-ItemProperty $_.PSPath}

Verifiera OLE DB-drivrutinen via en UDL-fil

Ett av de enklaste sätten att testa en OLE DB-drivrutin är att använda en UDL-fil (Universal Data Link). Skapa valfri textfil i Utforskaren och byt namn på den till filnamnstillägget .udl . Kontrollera att filnamnstillägg är aktiverade för att göra ändringen. Dubbelklicka på filen för att öppna en dialogruta där du kan se de installerade leverantörerna och testa deras anslutningar. Mer information finns i Testa OLE DB-anslutningen till SQL Server med hjälp av en UDL-fil.

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

Välj OK i dialogrutan för att bekräfta konfigurationen.

Granska UDL-filinnehållet

Om du öppnar UDL-filen i en textredigerare kan du kopiera anslutningssträngen som ska användas i ditt program. Nedan följer två exempel:

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

Verifiera en OLE DB-drivrutin

Det första steget för att verifiera en drivrutin är att se om namnet visas i listan över installerade leverantörer av en 64-bitars eller 32-bitars UDL-dialogruta, enligt föregående avsnitt. 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.

Med sql Server Native Client-drivrutinen som exempel kan du se i följande bild, 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-bitars och 64-bitarsproviders visas under samma nyckel.

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 kan dock finnas fall där de inte är det. I sådana fall kan program som använder det versionsoberoende namnet inte ansluta, men de kan ansluta om de använder det versionshanterade ProgID. 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.

Dessa registernycklar är sökvägarna till SQL Native Client 11.0 i Registereditorn för 64-bitarsdatorer:

  • 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 icke-Microsoft-leverantörer

Teknisk support för ole db-leverantörer som inte kommer från Microsoft är begränsad till att validera 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