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.
Object Linking and Embedding Database (OLE DB) ist eine Microsoft-Datenzugriffstechnologie, die verwendet wird, um Anwendungen mit verschiedenen Datenquellen mithilfe von OLE DB-Anbietern zu verbinden. Die Problembehandlung bei OLE DB-Treiberinstallationen und -validierungen kann komplex sein, ist jedoch entscheidend für eine nahtlose Datenbankinteraktion. Dieser Leitfaden zur Problembehandlung zielt darauf ab, Einblicke in die Installation, Validierung und Lösung von Problemen im Zusammenhang mit OLE DB-Treibern zu bieten.
Überprüfen des OLE DB-Treibers oder -Anbieters über PowerShell
Führen Sie das folgende PowerShell-Cmdlet als Administrator aus, um zu überprüfen, ob der neueste OLE DB-Treiber für SQL Server auf dem Betriebssystem installiert ist.
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
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}
Ü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). Erstellen Sie eine beliebige Textdatei im Windows-Explorer, und benennen Sie sie um, damit die UDL-Dateierweiterung vorhanden ist. Stellen Sie sicher, dass Dateierweiterungen aktiviert sind, um die Änderung vorzunehmen. Doppelklicken Sie auf die Datei, um ein Dialogfeld zu öffnen, in dem die installierten Anbieter angezeigt und ihre Verbindungen getestet werden. Weitere Informationen finden Sie unter Testen der OLE DB-Konnektivität mit SQL Server mithilfe einer UDL-Datei.
Wählen Sie im Dialogfeld "OK " aus, um die Konfiguration zu bestätigen.
Überprüfen des UDL-Dateiinhalts
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=""
Überprüfen eines OLE DB-Treibers
Der erste Schritt zum Überprüfen eines Treibers besteht darin, zu sehen, ob der Name in der Liste der installierten Anbieter eines 64-Bit- oder 32-Bit-UDL-Dialogfelds angezeigt wird, wie im vorherigen Abschnitt gezeigt. Wenn dies nicht der Fall ist, müssen Sie den Anbieter erneut installieren oder den Anbieter konsultieren.
Sie können auch den Speicherort des Treibers in der Registrierung nachverfolgen. Der Treibername ist eine COM ProgID und sie finden Sie in HKEY_CLASSES_ROOT.
Mit dem SQL Server Native Client-Treiber als Beispiel können Sie in der folgenden Abbildung sehen, die Zuordnung zwischen der ProgID SQLNCLI11.1 und dem Anbieternamen SQL Server Native Client 11.0.
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 Fälle 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.
Dies 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.
Diese Registrierungsschlüssel sind die Pfade zu SQL Native Client 11.0 im Registrierungs-Editor für 64-Bit-Computer:
HKEY_CLASSES_ROOT\SQLNCLI.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\SQLNCLI.1\CLSIDHKEY_CLASSES_ROOT\CLSID\{guid}\InProcServer32
Unterstützung für Nicht-Microsoft-Anbieter
Der technische Support für Nicht-Microsoft OLE DB-Anbieter beschränkt sich auf die Überprüfung der ProgID auf eine gültige CLSID 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. Wenn die Dateien vorhanden sind, aber die Registrierungseinträge nicht vorhanden sind, können Sie den Anbieter manuell registrieren.REGSVR32 Führen Sie zum Registrieren einer COM-DLL den folgenden Befehl an 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.