7

Каждый новый компьютер в моей компании проходит один и тот же процесс установки программного обеспечения; одной программе, в частности, необходим доступ к базе данных MS SQL Server через ODBC. Затем программа используется несколькими пользователями домена на одном компьютере в разное время.

На компьютерах с Windows XP я просто настраивал соединение ODBC как системный DSN. Независимо от того, какой пользователь вошел в систему, соединение будет работать для него, и моя работа была выполнена.

В последнее время мы получаем все больше и больше компьютеров с Windows 7, и этот метод, похоже, больше не работает. Программа не распознает соединения, которые я установил в System DSN, но распознает соединения в User DSN. Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда пользователь впервые входит в систему на компьютере, мне звонят, и мне нужно установить его или ее собственный DSN.

По какой причине это работает на XP, а не на 7? Я делал это неправильно с самого начала?

Обновление: возможно, причина не в Windows 7, а в том, что новые компьютеры работают под управлением 64-разрядной ОС. Я говорю это потому, что когда я запустил тестовое приложение (исходный код здесь) на 64-битной Windows 7, доступ к пользовательскому DSN работал нормально, но доступ к системному DSN выдал следующее сообщение об ошибке:

IM014: указанный DSN содержит несоответствие архитектуры между драйвером и приложением

Документация Microsoft указывает, что это происходит при обращении к 32-разрядному драйверу на 64-разрядном компьютере или наоборот. Это вполне может быть проблемой, потому что когда я переключил тестовое приложение на 64-битное, можно было получить доступ к System DSN.

Теперь возникает вопрос: почему это происходит для System DSN, а не для User DSN - для них установлены разные драйверы? Это означало бы, что я больше не смогу использовать System DSN, потому что не имею никакого влияния на программное обеспечение, которое нам нужно использовать.

2 ответа2

7

В статье Microsoft об управлении источниками данных говорится следующее:

Для управления источником данных, который подключается к 32-разрядному драйверу на 64-разрядной платформе, используйте c:\windows\sysWOW64\odbcad32.exe . Для управления источником данных, который подключается к 64-разрядному драйверу, используйте c:\windows\system32\odbcad32.exe . В инструментах администрирования в 64-разрядной операционной системе Windows 8 имеются значки для диалогового окна «Администратор источника данных ODBC для 32-разрядных и 64-разрядных систем».

Если вы используете 64-разрядный файл odbcad32.exe для настройки или удаления DSN, который подключается к 32-разрядному драйверу, например, «Драйвер к Microsoft Access» (* .mdb), вы получите следующее сообщение об ошибке:

Указанный DSN содержит несоответствие архитектуры между драйвером и приложением

Чтобы устранить эту ошибку, используйте 32-разрядный файл odbcad32.exe для настройки или удаления уведомления о доставке.

Ваше приложение очевидно 32-битное. Вы использовали правильный файл odbcad32.exe для определения DSN?

0

Права пользователя: убедитесь, что у пользователя есть возможность доступа к System-DNS или User-DNS. Ситуация здесь состояла в том, что Lotus-Notes запускался как сервис под SYSTEM-User. Не было подключения к ODBC. Мы изменили Пользователя для Сервиса, и это решило проблему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .