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.
Informationen zu UDL-Dateien
Eine der einfachsten Methoden zum Testen eines OLE DB-Anbieters ist die UDL-Datei (Universal Data Link). Erstellen Sie eine beliebige Textdatei im Windows-Explorer, und benennen Sie sie um, um eine . UDL-Dateierweiterung . Stellen Sie sicher, dass Dateierweiterungen aktiviert sind, um die Änderung vorzunehmen. Weitere Informationen finden Sie unter Testen der OLE DB-Konnektivität mit SQL Server mithilfe einer UDL-Datei
Doppelklicken Sie auf die Datei, um ein Dialogfeld zu öffnen, in dem die installierten Anbieter angezeigt und ihre Verbindungen getestet werden.
Notiz
Wenn Sie im Dialogfeld "OK" auswählen, können Sie die UDL-Datei im Editor öffnen, um die Verbindungszeichenfolge anzuzeigen, die Sie in Ihrer Anwendung verwenden können. Zum Beispiel:
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=""
Die Ui der UDL-Datei wird von OLEDB32.DLL bereitgestellt und in RUNDLL32.DLL gehostet.
Verwenden Sie für 32-Bit-Systeme oder für 64-Bit-Anbieter auf 64-Bit-Systemen den folgenden Befehl:
Rundll32.exe "C:\Program Files\Common Files\System\OLE DB\oledb32.dll",OpenDSLFile C:\test.udl
Verwenden Sie für 32-Bit-Anbieter auf 64-Bit-Systemen den folgenden Befehl:
C:\Windows\SysWOW64\Rundll32.exe C:\PROGRA~2\COMMON~1\System\OLEDB~1\oledb32.dll,OpenDSLFile C:\test.udl32
Die . Die UDL-Dateierweiterung ist dem ersten Befehl zugeordnet. Zum zweiten können Sie die Dinge vereinfachen, indem Sie eine 32-Bit-Eingabeaufforderung ausführen und dann START C:\TEMP\TEST.UDL
32-Bit-Anbieter testen. Noch einfacher ist die Zuordnung der . UDL32-Dateierweiterung auf den 32-Bit-Befehl.
32-Bit.udl32 Dateierweiterungszuordnung
Wenn Sie häufig 32-Bit-Anbieter verwenden, können Sie die Dateierweiterung Udl32 zuordnen, um das 32-Bit-UDL-Dialogfeld zu starten. Führen Sie folgende Schritte aus:
Kopieren Sie das Skript in Editor, und speichern Sie es als 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]
Doppelklicken Sie auf die .reg Datei, und erstellen Sie dann eine Datei mit der Dateierweiterung UDL32 . Beispiel: test.udl32. Außerdem wird das 32-Bit-UDL-Dialogfeld gestartet. Zum Beispiel:
Überprüfen eines OLE DB-Anbieters
Der erste Schritt zum Überprüfen eines Anbieters besteht darin, zu sehen, ob der Name in der Liste der installierten Anbieter eines 64-Bit- oder 32-Bit-UDL-Dialogfelds angezeigt wird, wie oben 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.
In der folgenden Abbildung sehen Sie 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 diesem 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 gab jedoch einige Fälle, in denen sie nicht waren. Anwendungen, die den versionsunabhängigen Namen verwenden, können 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.
Dies sind die Pfade zu SQL Native Client 11.0 im Registrierungs-Editor für 64-Bit-Computer:
HKEY_CLASSES_ROOT\SQLNCLI.1\CLSID
HKEY_CLASSES_ROOT\CLSID\<guid>\InProcServer32
HKEY_CLASSES_ROOT\Wow6432Node\CLSID\<guid>\InProcServer32
Dies sind die Pfade im Registrierungs-Editor für 32-Bit-Computer:
HKEY_CLASSES_ROOT\SQLNCLI.1\CLSID
HKEY_CLASSES_ROOT\CLSID\{guid}\InProcServer32
Unterstützung für Drittanbieter
Die Unterstützung für OLE DB-Anbieter von Drittanbietern ist auf die Überprüfung der ProgID auf eine gültige CLSID beschränkt und der InProcServer32
Unterschlüssel verweist auf die richtige DLL. 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.