Das ODBC-Administratortool zeigt in einer 64-Bit-Version von Windows sowohl die 32-Bit- als auch die 64-Bit-Benutzer-DSNs an

Dieser Artikel bietet eine Problemumgehung für das Problem, das im ODBC-Datenquellenadministrator-Tool auftritt.

Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 942976

Problembeschreibung

Eine 64-Bit-Version des Microsoft Windows-Betriebssystems enthält die folgenden Versionen des ODBC-Datenquellenadministratortools (Odbcad32.exe):

  • Die 32-Bit-Version der Datei Odbcad32.exe befindet sich im Ordner %systemdrive%\Windows\SysWoW64.
  • Die 64-Bit-Version der Datei Odbcad32.exe befindet sich im Ordner %systemdrive%\Windows\System32.

In der Datei Odbcad32.exe werden die folgenden Typen von Datenquellennamen (Data Source Names, DSNs) angezeigt:

  • System-DSNs
  • Benutzer-DSNs

Symptom 1

Die 32-Bit-Version des ODBC-Administratortools zeigt 32-Bit-System-DSNs, 32-Bit-Benutzer-DSNs und 64-Bit-Benutzer-DSNs an. Die 64-Bit-Version des ODBC-Administratortools zeigt 64-Bit-System-DSNs, 32-Bit-Benutzer-DSNs und 64-Bit-Benutzer-DSNs an.

Symptom 2

Die Funktion SQLDataSources gibt alle Versionen von Benutzer-DSNs zurück, unabhängig von der Architektur der Anwendung. Die Funktion SQLDataSources, die in einer 32-Bit-Anwendung aufgerufen wird, gibt nur System-DSNs für 32-Bit-Treiber zurück, aber sie gibt Benutzer-DSNs für 32-Bit-Treiber und 64-Bit-Treiber zurück. In ähnlicher Weise gibt die Funktion SQLDataSources, die in einer 64-Bit-Anwendung aufgerufen wird, nur System-DSNs für 64-Bit-Treiber zurück, aber die Benutzer-DSNs für 32-Bit-Treiber und 64-Bit-Treiber. Wenn die Anwendung eine Verbindung über einen Benutzer-DSN herstellt, der von der Funktion SQLDataSources zurückgegeben wird, wird daher möglicherweise die folgende Fehlermeldung angezeigt:

Der Name der Datenquelle wurde nicht gefunden, und es wurde kein Standardtreiber angegeben

Stellen Sie sich beispielsweise das folgende Szenario vor. Sie erstellen einen Benutzer-DSN für den 32-Bit-Treiber „Microsoft Access-Treiber (*.mdb)“. Dieser Treiber verfügt nicht über eine entsprechende 64-Bit-Version. Die Funktion SQLDataSources, die in einer 64-Bit-Anwendung aufgerufen wird, gibt diesen 32-Bit-Benutzer-DSN zurück. Wenn Sie jedoch über diesen 32-Bit-Benutzer-DSN eine Verbindung herstellen, wird die Fehlermeldung angezeigt, die weiter oben in diesem Abschnitt erwähnt wurde.

Ursache

Die Benutzer-DSNs werden unter dem folgenden Registrierungsunterschlüssel gespeichert:

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI

Die Registrierungsumleitung ist für diesen Registrierungsunterschlüssel nicht aktiviert. Benutzer-DSNs sind daher sowohl in der 32-Bit- als auch in der 64-Bit-Version des ODBC-Administratortools sichtbar.

Lösung

Um die Abwärtskompatibilität aufrechtzuerhalten, ist derzeit keine Lösung für dieses Problem verfügbar.

Problemumgehung

Um dieses Problem zu umgehen, verwenden Sie die entsprechende Version des ODBC-Administratortools. Wenn Sie eine Anwendung als 32-Bit-Anwendung unter einem 64-Bit-Betriebssystem erstellen und dann ausführen, müssen Sie die ODBC-Datenquelle mithilfe des ODBC-Administratortools in %windir%\SysWOW64\odbcad32.exe erstellen. Um den DSN-Typ anzugeben, können Sie an die 32-Bit-Benutzer-DSNs „_32“ und an die 64-Bit-Benutzer-DSNs „_64“ anfügen.

Weitere Informationen

Das 64-Bit-ODBC-Administratortool kann von der Systemsteuerung aus aufgerufen werden, um Benutzer-DSNs und System-DSNs zu verwalten, die von 64-Bit-Prozessen verwendet werden. Unter einem 64-Bit-Betriebssystem wird das 32-Bit-ODBC-Administratortool für Prozesse von Windows auf Windows 64 (WOW64) verwendet. Sie müssen das 32-Bit-ODBC-Administratortool direkt vom dem Ordner „SysWoW64“ aus aufrufen. Sie können das 32-Bit-ODBC-Administratortool verwenden, um Benutzer-DSNs und System-DSNs zu verwalten, die von WOW64-Prozessen verwendet werden.

System-DSNs werden im folgenden Registrierungsunterschlüssel gespeichert:

HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI

Die Registrierungsumleitung ist für diesen Registrierungsunterschlüssel aktiviert. Daher werden System-DSNs für 32-Bit-Treiber und 64-Bit-Treiber getrennt. Das 64-Bit-ODBC-Administratortool zeigt keine System-DSNs an, die vom 32-Bit-ODBC-Administratortool erstellt wurden. In ähnlicher Weise zeigt das 32-Bit-ODBC-Administratortool keine System-DSNs an, die vom 64-Bit-ODBC-Administratortool erstellt wurden. Außerdem zeigt das 64-Bit-ODBC-Administratortool keine System-DSNs an, die 32-Bit-Treiber verwenden. Ebenso zeigt das 32-Bit-ODBC-Administratortool keine System-DSNs an, die 64-Bit-Treiber verwenden.

Benutzer-DSNs werden im folgenden Registrierungsunterschlüssel gespeichert:

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI

Die Registrierungsumleitung ist für diesen Registrierungsunterschlüssel nicht aktiviert. Daher zeigen beide ODBC-Administratortools alle Benutzer-DSNs an.

Weitere Informationen zur Registrierungsumleitung finden Sie unter Registrierungsumleitung.