Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Zusammenfassung
In diesem Artikel erfahren Sie, wie Sie überprüfen, welcher OLE DB-Treiber (Object Linking and Embedding Database) für SQL Server auf einem Windows-Computer installiert ist, wie Sie überprüfen, ob sie funktioniert, und wie Sie die Registrierung in der Windows Registrierung nachverfolgen. Verwenden Sie diese Überprüfungen, wenn eine Anwendung keine Verbindung mit SQL Server herstellen kann, und Sie vermuten, dass der OLE DB-Treiber fehlt oder die Registrierung aufgehoben wurde.
Überprüfen des OLE DB-Treibers oder -Anbieters über PowerShell
Um zu ermitteln, welche Versionen des OLE DB-Treibers für SQL Server auf dem Betriebssystem installiert sind, führen Sie das folgende PowerShell-Cmdlet als Administrator aus.
Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft", "HKLM:\SOFTWARE\Wow6432Node\Microsoft" |
Where-Object { $_.Name -like "*MSOLEDBSQL*" } |
ForEach-Object { Get-ItemProperty $_.PSPath }
Wenn Sie Version 18 und 19 auf dem Betriebssystem installiert haben, sieht die Ausgabe möglicherweise wie folgt aus.
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
Der InstalledVersion Wert zeigt den genauen Build jedes installierten Treibers an. Microsoft OLE DB-Treiber 19 für SQL Server (MSOLEDBSQL19) wird neben Microsoft OLE DB-Treiber 18 für SQL Server (MSOLEDBSQL) installiert, daher ist es zu erwarten, dass beide Schlüssel angezeigt werden. Um zu bestätigen, ob Sie die neueste Version ausführen, vergleichen Sie den Wert mit dem aktuellen allgemeinen Verfügbarkeitsbuild (GA), der unter "Download Microsoft OLE DB-Treiber für SQL Server" aufgeführt ist.
Überprüfen einer SQL Server Native Client(SQLNCLI)-Installation
Führen Sie das folgende PowerShell-Cmdlet als Administrator aus, um nach einer SQLNCLI-Installation (OLE DB Provider Interface) zu suchen.
Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft", "HKLM:\SOFTWARE\Wow6432Node\Microsoft" |
Where-Object { $_.Name -like "*SQLNCLi*" } |
ForEach-Object { Get-ItemProperty $_.PSPath}
Notiz
SQL Server Native Client (SNAC SQLNCLI oder SQLNCLI11) und der ältere Microsoft OLE DB-Anbieter für SQL Server (SQLOLEDB) werden nicht mit SQL Server 2022 (16.x) und höheren Versionen oder mit SQL Server Management Studio 19 und höheren Versionen ausgeliefert. Sie werden nicht für die neue Anwendungsentwicklung empfohlen. Verwenden Sie stattdessen die Microsoft OLE DB-Treiber für SQL Server. In diesem Artikel wird SQLNCLI weiterhin in Beispielen verwendet, da es bei vorhandenen Systemen, die Sie behandeln, häufig verwendet wird.
Überprüfen des OLE DB-Treibers über eine UDL-Datei
Eine der einfachsten Methoden zum Testen eines OLE DB-Treibers ist die Verwendung einer UDL-Datei (Universal Data Link). Eine UDL-Datei öffnet das Dialogfeld " Datenlinkeigenschaften ", in dem die auf dem Computer registrierten OLE DB-Anbieter aufgelistet sind, und Sie können eine Verbindung ohne vollständige Anwendung testen.
Führen Sie die folgenden Schritte aus, um eine UDL-Datei zu erstellen und zu öffnen:
- Stellen Sie sicher, dass Dateierweiterungen im Datei-Explorer aktiviert sind, damit Sie die Erweiterung ändern können.
- Erstellen Sie eine beliebige Textdatei im Datei-Explorer, und benennen Sie sie dann in die Dateierweiterung UDL um. Wählen Sie "Ja" aus, wenn Windows Sie davor warnt, die Dateinamenerweiterung zu ändern.
- Doppelklicken Sie auf die Datei, um das Dialogfeld "Datenverknüpfungseigenschaften " zu öffnen, in dem Sie die installierten Anbieter sehen und deren Verbindungen testen können.
- Wählen Sie im Dialogfeld "OK " aus, um die Konfiguration zu bestätigen.
Tip
Wenn beim Doppelklicken auf die Datei das Dialogfeld "Datenverknüpfungseigenschaften " nicht geöffnet wird (z. B. wird die Datei in einem Text-Editor geöffnet oder ein Fehler zurückgegeben), versuchen Sie eine der folgenden Alternativen:
Klicken Sie mit der rechten Maustaste auf die UDL-Datei , und wählen Sie dann "Eigenschaften" aus. In den meisten Systemen öffnet diese Aktion auch das Dialogfeld "Datenverbindungseigenschaften ".
Öffnen Sie das Dialogfeld direkt, indem Sie den folgenden Befehl ausführen, wobei C:\temp\test.udl der Pfad zu Ihrer Datei ist:
Rundll32.exe "C:\Program Files\Common Files\System\OLE DB\oledb32.dll",OpenDSLFile C:\temp\test.udl
Informationen zum Öffnen des 32-Bit-Dialogfelds auf einem 64-Bit-Betriebssystem finden Sie unter "Starten einer UDL-Datei".
Eine schrittweise Anleitung zum Testen einer Verbindung über jeden Anbieter finden Sie unter Testen der OLE DB-Konnektivität zu SQL Server mithilfe einer UDL-Datei.
Überprüfen Sie den Inhalt der UDL-Datei, um eine Verbindungszeichenfolge abzurufen.
Wenn Sie die UDL-Datei in einem Text-Editor öffnen, können Sie die Verbindungszeichenfolge kopieren, die in Ihrer Anwendung verwendet werden soll. Zwei Beispiele:
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=""
Verfolgen eines OLE DB-Anbieters in der Windows-Registrierung
Um einen Treiber zu überprüfen, überprüfen Sie zuerst, ob der Name in der Liste der installierten Anbieter in einem 64-Bit- oder 32-Bit-UDL-Dialogfeld angezeigt wird, wie im vorherigen Abschnitt gezeigt. Falls nicht, installieren Sie den Anbieter erneut, oder wenden Sie sich an den Anbieter.
Wenn der Anbieter aufgeführt ist, die Verbindungen aber dennoch fehlschlagen, ermitteln Sie den Speicherort des Treibers in der Registrierung. Der Treibername ist eine COM ProgID. Sie finden es in HKEY_CLASSES_ROOT.
Zuordnen einer ProgID zu einem Anbieternamen
Die folgende Abbildung zeigt die Zuordnung zwischen der ProgID SQLNCLI11.1 und dem Anbieternamen SQL Server Native Client 11.0 unter Verwendung des SQL Server nativen Clienttreibers als Beispiel.
Die ProgID von 32-Bit- und 64-Bit-Anbietern wird unter demselben Schlüssel angezeigt.
Neben SQLNCLI11.1 gibt es auch eine ProgID namens SQLNCLI11. Der Grund dafür ist, dass ein Anbieterentwickler mehrere Versionen desselben Anbieters nebeneinander installieren kann, jeweils mit einem anderen numerischen Suffix. Der nicht nummerierte Name ist die versionsunabhängige ProgID. Anwendungen können darauf verweisen und an die neueste Version des Anbieters umgeleitet werden.
Für alle Absichten und Zwecke sollten diese beiden verschiedenen ProgID-Namen gleichwertig sein. Es kann jedoch Vorkommen geben, in denen sie nicht vorhanden sind. In diesen Fällen können Anwendungen, die den versionsunabhängigen Namen verwenden, keine Verbindung herstellen, aber sie können eine Verbindung herstellen, wenn sie die versionierte ProgID verwenden. Der Grund dafür ist, dass die beiden Einträge auf unterschiedliche CLSID-Werte verweisen, wodurch die Anbieter-DLL gefunden wird.
Anbieter-DLL anhand der CLSID ermitteln
Dieses CLSID ist die COM-GUID. Die COM-Infrastruktur sucht die GUID aus der ProgID. Anschließend wird unter dem HKEY_CLASSES_ROOT\CLSID Schlüssel nach einem Schlüssel gesucht, dessen GUID dem Schlüsselnamen entspricht:
Der InProcServer32 Wert verweist auf die Anbieter-DLL.
Bei 32-Bit-Anbietern verwendet COM dieselbe GUID, sucht aber unter HKEY_CLASSES_ROOT\Wow6432Node\CLSID.
In diesem Fall befindet sich der Anbieter im Ordner SysWow64 .
Notiz
Diese Beispiele stammen von 64-Bit-Computern. Auf 32-Bit-Computern gibt es keine Wow6432Node In der Registrierung.
Registrierungspfade zum Überprüfen von SQL Server Native Client 11.0
Diese Registrierungsschlüssel sind die Pfade zu SQL Server Native Client 11.0 im Registrierungs-Editor für 64-Bit-Computer:
HKEY_CLASSES_ROOT\SQLNCLI11.1\CLSIDHKEY_CLASSES_ROOT\CLSID\<guid>\InProcServer32HKEY_CLASSES_ROOT\Wow6432Node\CLSID\<guid>\InProcServer32
Dies sind die Pfade im Registrierungs-Editor für 32-Bit-Computer:
HKEY_CLASSES_ROOT\SQLNCLI11.1\CLSIDHKEY_CLASSES_ROOT\CLSID\{guid}\InProcServer32
Unterstützung für Nicht-Microsoft OLE DB-Anbieter
Die technische Unterstützung für Nicht-Microsoft OLE DB-Anbieter ist auf die Überprüfung beschränkt, dass die ProgID auf eine gültige CLSID verweist und dass der InProcServer32 Unterschlüssel auf die richtige DLL verweist. Wenn der Pfad falsch ist oder der Registrierungseintrag nicht vorhanden ist, installieren Sie den Anbieter erneut, oder wenden Sie sich an den Anbieter.
Manuelles Registrieren einer Anbieter-DLL mithilfe von regsvr32
Wenn die Dateien vorhanden sind, aber die Registrierungseinträge nicht vorhanden sind, können Sie den Anbieter REGSVR32mithilfe manuell registrieren. Führen Sie zum Registrieren einer COM-DLL den folgenden Befehl in einer Eingabeaufforderung mit erhöhten Rechten aus:
Regsvr32 sqlncli11
Wenn es sowohl 32-Bit- als auch 64-Bit-Versionen des Anbieters gibt, führen Sie den Befehl für beide DLLs aus. Verwenden Sie eine 32-Bit-Eingabeaufforderung, um die 32-Bit-DLL zu registrieren.