Kommentar
Å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.
Sammanfattning
Den här artikeln visar hur du kontrollerar vilken ole db-drivrutin (Object Linking and Embedding Database) eller provider för SQL Server som är installerad på en Windows dator, hur du verifierar att den fungerar och hur du spårar dess registrering i Windows registret. Använd dessa kontroller när ett program inte kan ansluta till SQL Server och du misstänker att OLE DB-drivrutinen saknas eller avregistreras.
Verifiera OLE DB-drivrutin eller -provider via PowerShell
Om du vill ta reda på vilka versioner av OLE DB-drivrutinen för SQL Server är installerade på operativsystemet kör du 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
Värdet InstalledVersion visar den exakta versionen av varje installerad drivrutin. Microsoft OLE DB Driver 19 for SQL Server (MSOLEDBSQL19) installeras sida vid sida med Microsoft OLE DB Driver 18 for SQL Server (MSOLEDBSQL), så det är förväntat att båda nycklarna visas. Om du vill bekräfta om du kör den senaste versionen jämför du värdet med den aktuella versionen av allmän tillgänglighet (GA) som anges i Ladda ned Microsoft OLE DB Driver for SQL Server.
Kontrollera om SQL Server Native Client (SQLNCLI) är installerat
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}
Kommentar
SQL Server Native Client (SNAC eller SQLNCLISQLNCLI11) och den äldre Microsoft OLE DB-providern för SQL Server (SQLOLEDB) levereras inte med SQL Server 2022 (16.x) och senare versioner, eller med SQL Server Management Studio 19 och senare versioner. De rekommenderas inte för ny programutveckling. Använd Microsoft OLE DB Driver for SQL Server i stället. Den här artikeln använder fortfarande SQLNCLI i exempel eftersom det fortfarande är vanligt på befintliga system som du felsöker.
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). En UDL-fil öppnar dialogrutan Egenskaper för datalänk , som visar de OLE DB-leverantörer som är registrerade på datorn och låter dig testa en anslutning utan ett fullständigt program.
Följ dessa steg för att skapa och öppna en UDL-fil:
- Kontrollera att filnamnstillägg är aktiverade i Utforskaren så att du kan ändra tillägget.
- Skapa valfri textfil i Utforskaren och byt sedan namn på den till filnamnstillägget .udl . Välj Ja när Windows varnar dig om att ändra filnamnstillägget.
- Dubbelklicka på filen för att öppna dialogrutan Egenskaper för datalänk , där du kan se de installerade leverantörerna och testa deras anslutningar.
- Välj OK i dialogrutan för att bekräfta konfigurationen.
Tip
Om dubbelklicka på filen inte öppnar dialogrutan Egenskaper för datalänk (filen öppnas till exempel i en textredigerare eller returnerar ett fel) kan du prova något av följande alternativ:
Högerklicka på .udl-filen och välj sedan Egenskaper. I de flesta system öppnar den här åtgärden även dialogrutan Egenskaper för datalänk .
Öppna dialogrutan direkt genom att köra följande kommando, där C:\temp\test.udl är sökvägen till filen:
Rundll32.exe "C:\Program Files\Common Files\System\OLE DB\oledb32.dll",OpenDSLFile C:\temp\test.udl
Information om hur du öppnar 32-bitarsdialogrutan i ett 64-bitars operativsystem finns i Starta en UDL-fil.
Stegvisa anvisningar om hur du testar en anslutning via varje provider finns i Testa OLE DB-anslutning till SQL Server med hjälp av en UDL-fil.
Granska UDL-filinnehållet för att få en reťazec pripojenia
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=""
Spåra en OLE DB-provider i Windows-registret
Om du vill verifiera en drivrutin kontrollerar du först om namnet visas i listan över installerade leverantörer i en 64-bitars eller 32-bitars UDL-dialogruta, som du ser i föregående avsnitt. Om den inte gör det installerar du om providern eller kontaktar leverantören.
Om providern visas men anslutningarna fortfarande misslyckas kan du spåra drivrutinsplatsen i registret. Drivrutinsnamnet är ett COM ProgID. Du hittar den i HKEY_CLASSES_ROOT.
Mappa ett ProgID till ett providernamn
Med drivrutinen SQL Server intern klient som exempel visar följande bild mappningen mellan ProgID-SQLNCLI11.1 och providernamnet SQL Server intern klient 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.
Leta upp provider-DLL:en från CLSID
CLSID är COM-GUID:en. COM-infrastrukturen letar upp GUID:et från ProgID. Sedan letar den under nyckeln HKEY_CLASSES_ROOT\CLSID efter en nyckel vars GUID motsvarar 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.
Registersökvägar att kontrollera för SQL Server Native Client 11.0
Dessa registernycklar är sökvägarna till SQL Server intern klient 11.0 i Registereditorn för 64-bitarsdatorer:
HKEY_CLASSES_ROOT\SQLNCLI11.1\CLSIDHKEY_CLASSES_ROOT\CLSID\<guid>\InProcServer32HKEY_CLASSES_ROOT\Wow6432Node\CLSID\<guid>\InProcServer32
Det här är sökvägarna i Registereditorn för 32-bitarsdatorer:
HKEY_CLASSES_ROOT\SQLNCLI11.1\CLSIDHKEY_CLASSES_ROOT\CLSID\{guid}\InProcServer32
Stöd för OLE DB-leverantörer som inte kommer från Microsoft
Teknisk support för icke-Microsoft OLE DB-leverantörer är begränsad till att verifiera att ProgID pekar på ett giltigt CLSID och att undernyckeln InProcServer32 pekar på rätt DLL. Om sökvägen är felaktig eller registerposten inte finns installerar du om providern eller kontaktar leverantören.
Registrera en provider-DLL manuellt med hjälp av regsvr32
Om filerna finns men registerposterna inte gör det, 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.