ODBCAD.exe один и тот же источник данных в system32 и syswow64

488
BendEg

В настоящее время я хочу доказать, какие источники данных ODBC настроены на машине Windows Server 2008 R2. Когда я открываю system32/odbcad32.exeи SysWow64/odbcad32.exeони содержат одни и те же источники (64-битная ОС). Как проверить, какую архитектуру использует DSN? Например, в Windows 10 это отображается.

Большое спасибо!

2
Вот ответ Microsoft на ваш вопрос, который я считаю -> [KB942976] (https://support.microsoft.com/en-us/kb/942976). Я никогда не замечал этого myselft, так как x86 и x64 ODBC `Системные DSNs 'в моем случае всегда находятся в соответствующем` system32 / odbcad32.exe` для 32-битных и `SysWow64 / odbcad32.exe` для 64-битных. Если вы используете только `User DNS`, то это, похоже, обходной путь MS на Server 2008 R2. Вы могли бы изменить все на системные DSN, я полагаю. Для Windows 8 и Server 2012 есть PowerShell `Get-OdbcDsn`, но он не применим к 2008 R2. Если это поможет, дайте мне знать, и я добавлю в качестве ответа. Pimp Juice IT 8 лет назад 1
Спасибо. Я также кое-что понял. Вы можете заглянуть в реестр, где у вас есть раздел для 32-битной и 64-битной систем, в котором есть узел для ODBC.INI. 32-битный: `HKEY_LOCAL_MACHINE / ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ / Wow6432Node / ODBC / ODBC.INI` и для 64-битного:` HKEY_LOCAL_MACHINE / ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ / ODBC / ODBC.INI` BendEg 8 лет назад 1
@TheFurryITSnuggleBuddy Спасибо за ответ на этот вопрос. Не могли бы вы добавить свой комментарий в качестве ответа, чтобы принести пользу всему сообществу и, возможно, немного уточнить? Это было бы прекрасно. hot2use 6 лет назад 0

1 ответ на вопрос

2
Pimp Juice IT

Коррелированные пути реестра

  • 32 бит: HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/ODBC/ODBC.INI
  • 64 бит: HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBC.INI

Ниже Microsoft KB942976 может иметь ответ на ваш вопрос.

Я никогда не замечал этого сам, поскольку системные DSN для ODBC x86 и x64 в моем случае всегда применимы как system32/odbcad32.exeдля 32-разрядных, так и SysWow64/odbcad32.exeдля 64-разрядных систем .

Если вы используете только пользовательский DSN, то, похоже, это обходной путь Microsoft на Server 2008 R2 . Вы могли бы изменить все на системные DSN, я полагаю.

Для Windows 8 и Server 201 2 есть PowerShell Get-OdbcDsn, но он не применим к Server 2008 R2 .

Инструмент администратора ODBC отображает как 32-разрядные, так и 64-разрядные пользовательские уведомления о доставке в 64-разрядной версии Windows

симптомы

64-разрядная версия операционной системы Microsoft Windows включает в себя следующие версии инструмента администратора источника данных Microsoft Open Database Connectivity (ODBC) ( Odbcad32.exe):

  • 32-битная версия Odbcad32.exeфайла находится в %systemdrive%\Windows\SysWoW64папке.

  • 64-битная версия Odbcad32.exeфайла находится в %systemdrive%\Windows\System32папке.

Odbcad32.exeФайл отображает следующие типы имен источников данных (DSN):

  • Системные уведомления о доставке
  • Пользовательские уведомления о доставке

Симптом 1

32-разрядная версия инструмента администратора ODBC отображает 32-разрядные системные DSN, 32-разрядные пользовательские DSN и 64-разрядные пользовательские DSN. 64-разрядная версия инструмента администратора ODBC отображает 64-разрядные системные DSN, 32-разрядные пользовательские DSN и 64-разрядные пользовательские DSN.

Симптом 2

Функция SQLDataSources возвращает все версии пользовательских DSN независимо от архитектуры приложения. Функция SQLDataSources, вызываемая в 32-разрядном приложении, возвращает только системные уведомления о доставке для 32-разрядных драйверов, но возвращает пользовательские уведомления о доставке как для 32-разрядных, так и для 64-разрядных драйверов. Аналогично, функция SQLDataSources, которая вызывается в 64-разрядном приложении, возвращает только системные уведомления о доставке для 64-разрядных драйверов, но возвращает пользовательские уведомления о доставке как для 32-разрядных, так и для 64-разрядных драйверов. Поэтому, если приложение устанавливает соединение с помощью пользовательского уведомления о доставке, которое возвращается из функции SQLDataSources, вы можете получить следующее сообщение об ошибке:

Имя источника данных не найдено и драйвер по умолчанию не указан

Например, рассмотрим следующий сценарий. Вы создаете DSN пользователя для 32-разрядного драйвера «Microsoft Access Driver (* .mdb)». Этот драйвер не имеет соответствующей 64-битной версии. Функция SQLDataSources, которая вызывается в 64-разрядном приложении, возвращает этот 32-разрядный пользовательский DSN. Однако, если вы устанавливаете соединение через этот 32-разрядный пользовательский DSN, вы получаете сообщение об ошибке, которое упоминалось ранее в этом разделе.


причина

Пользовательские DSN хранятся в следующем подразделе реестра:

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI 

Перенаправление реестра не включено для этого подраздела реестра. Поэтому пользовательские уведомления о доставке видны как в 32-разрядной, так и в 64-разрядной версиях инструмента администратора ODBC.


разрешение

Для обеспечения обратной совместимости, в настоящее время нет решения для этой проблемы.


Временное решение

Чтобы обойти эту проблему, используйте соответствующую версию инструмента ODBC Administrator. Если вы создаете, а затем запускаете приложение как 32-разрядное приложение в 64-разрядной операционной системе, необходимо создать источник данных ODBC с помощью инструмента администратора ODBC в% windir% \ SysWOW64 \ odbcad32.exe. Чтобы указать тип уведомления о доставке, можно добавить «_32» для 32-разрядных пользовательских DSN и «_64» для 64-разрядных пользовательских DSN.


Дополнительная информация

64-разрядный инструмент администратора ODBC можно вызвать из панели управления для управления пользовательскими уведомлениями о доставке и системными уведомлениями о доставке, которые используются 64-разрядными процессами. В 64-разрядной операционной системе 32-разрядный инструмент администратора ODBC используется для процессов Windows в Windows 64 (WOW64). Вы должны напрямую вызвать 32-битный инструмент администратора ODBC из папки SysWoW64. Вы можете использовать 32-битный инструмент администратора ODBC для управления пользовательскими DSN и системными DSN, которые используются процессами WOW64.

Системные уведомления о доставке хранятся в следующем подразделе реестра:

HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI 

Перенаправление реестра включено для этого подраздела реестра. Поэтому системные уведомления о доставке для 32-разрядных и 64-разрядных драйверов разделены. 64-разрядный инструмент администратора ODBC не отображает системные уведомления о доставке, созданные 32-разрядным инструментом администратора ODBC. Аналогично, 32-разрядный инструмент администратора ODBC не отображает системные уведомления о доставке, созданные 64-разрядным инструментом администратора ODBC. Кроме того, 64-разрядный инструмент администратора ODBC не отображает системные уведомления о доставке, в которых используются 32-разрядные драйверы. Аналогично, 32-разрядный инструмент администратора ODBC не отображает системные уведомления о доставке, в которых используются 64-разрядные драйверы.

Пользовательские уведомления о доставке хранятся в следующем подразделе реестра:

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI 

Перенаправление реестра не включено для этого подраздела реестра. Поэтому оба инструмента администратора ODBC отображают все пользовательские уведомления о доставке.

Для получения дополнительных сведений о перенаправлении реестра посетите следующий веб-сайт Microsoft Developer Network (MSDN):

http://msdn2.microsoft.com/en-us/library/aa384232.aspx


Дополнительные ресурсы