Каждый новый компьютер в моей компании проходит один и тот же процесс установки программного обеспечения; одной программе, в частности, необходим доступ к базе данных 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, потому что не имею никакого влияния на программное обеспечение, которое нам нужно использовать.