Beheerprogramma voor ODBC-zowel de 32-bits als de 64-bits DSN's worden weergegeven in een 64-bits versie van Windows


Symptomen


Een 64-bits versie van het besturingssysteem Microsoft Windows bevat de volgende versies van het hulpprogramma Microsoft Open Database Connectivity (ODBC)-Data Source Administrator (Odbcad32.exe):
  • De 32-bits versie van het bestand Odbcad32.exe bevindt zich in de map %systemdrive%\Windows\SysWoW64.
  • De 64-bits versie van het bestand Odbcad32.exe bevindt zich in de map %systemdrive%\Windows\System32.
Het bestand Odbcad32.exe worden de volgende typen namen van gegevensbronnen (DSN's) weergegeven:
  • Systeem-DSN 's
  • Gebruikers-DSN

Symptoom 1

De 32-bits versie van het beheerprogramma voor ODBC-wordt de 32-bits systeem-DSN's, 32-bits gebruiker DSN's en 64-bit gebruikers-DSN's weergegeven. De 64-bits versie van het beheerprogramma voor ODBC-wordt de 64-bits systeem-DSN's, 32-bits gebruiker DSN's en 64-bit gebruikers-DSN's weergegeven.

Symptoom 2

De functie SQLDataSources retourneert alle versies van de gebruikers-DSN's, ongeacht de architectuur van de toepassing. De functie SQLDataSources aangeroepen in een 32-bits toepassing alleen systeem-DSN's voor 32-bits stuurprogramma's als resultaat gegeven, maar gebruikers-DSN voor stuurprogramma's voor 32-bits en 64-bits stuurprogramma's als resultaat gegeven. Ook de SQLDataSources -functie die wordt aangeroepen in een 64-bits toepassing alleen systeem-DSN voor 64-bits stuurprogramma's als resultaat gegeven, maar gebruikers-DSN voor stuurprogramma's voor 32-bits en 64-bits stuurprogramma's als resultaat gegeven. Dus als de toepassing een verbinding maakt met behulp van een gebruikers-DSN die wordt geretourneerd door de functie SQLDataSources , verschijnt het volgende foutbericht weergegeven:
Naam van de gegevensbron niet gevonden en geen standaardstuurprogramma opgegeven
Neem bijvoorbeeld het volgende scenario. U maakt een gebruikers-DSN voor de 32-bits stuurprogramma "Microsoft Access-stuurprogramma (*.mdb)." Dit stuurprogramma beschikt niet over een bijbehorende 64-bits versie. De functie SQLDataSources aangeroepen in een 64-bits toepassing retourneert deze 32-bits gebruiker DSN. Als u een verbinding via deze 32-bits gebruikers-DSN, ontvangt u het foutbericht dat eerder in deze sectie wordt vermeld.

Oorzaak


De gebruikers-DSN's worden opgeslagen onder de volgende registersubsleutel:
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
Registratie-omleiding is niet ingeschakeld voor deze subsleutel in het register. Gebruikers-DSN's zijn dus zichtbaar in de 32-bits en 64-bits versies van de ODBC Administrator-hulpprogramma.

Oplossing


Achterwaartse compatibiliteit is geen oplossing voor dit probleem beschikbaar.

Tijdelijke oplossing


Om dit probleem te omzeilen, gebruikt u de juiste versie van het beheerprogramma voor ODBC. Als u bouwt en vervolgens een toepassing als een 32-bits toepassing op een 64-bits besturingssysteem uitvoert, moet u de ODBC-gegevensbron maken met behulp van het beheerprogramma voor ODBC-in % windir%\SysWOW64\odbcad32.exe. Om aan te geven welk type DSN, kunt u "_32" voor de 32-bits gebruiker DSN's en '_64' voor de 64-bits gebruiker DSN's toevoegen.

Meer informatie


Het hulpprogramma voor 64-bits ODBC-beheer kan worden aangeroepen vanuit het Configuratiescherm voor het beheren van gebruikers-DSN's en systeem-DSN's die in 64-bits processen worden gebruikt. Op een 64-bits besturingssysteem, wordt de 32-bits ODBC Administrator-hulpprogramma voor Windows gebruikt op Windows 64 (WOW64) processen. U moet het hulpprogramma 32-bits ODBC-beheer vanuit de map SysWoW64 rechtstreeks aanroepen. Het hulpprogramma voor 32-bits ODBC-beheer kunt u gebruikers-DSN's en systeem-DSN's die worden gebruikt door WOW64 processen beheren.

Systeem-DSN's worden opgeslagen in de volgende registersubsleutel:
HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI
Registratie-omleiding is ingeschakeld voor deze subsleutel in het register. Daarom de systeem-DSN's voor stuurprogramma's voor 32-bits en 64-bits stuurprogramma's worden gescheiden. Systeem-DSN's die zijn gemaakt met het hulpprogramma voor 32-bits ODBC-beheer niet wordt weergegeven in de 64-bits ODBC-beheer tool. Ook weer het hulpprogramma voor 32-bits ODBC-beheer niet systeem-DSN's die zijn gemaakt met het hulpprogramma voor 64-bits ODBC-beheer. Ook worden de 64-bits ODBC-beheer tool geen systeem-DSN die 32-bits stuurprogramma's weergegeven. Ook weer het hulpprogramma voor 32-bits ODBC-beheer niet systeem-DSN die 64-bits stuurprogramma's gebruiken.

Gebruikers-DSN's worden opgeslagen in de volgende registersubsleutel:
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
Registratie-omleiding is niet ingeschakeld voor deze subsleutel in het register. Daarom weergegeven beide hulpprogramma's voor ODBC-beheer voor alle gebruikers-DSN.

Ga naar de volgende website van Microsoft Developer Network (MSDN) voor meer informatie over het omleiden van het register: