У нас есть база данных Microsoft Access 2010 (ACCDB).
Этот файл ACCDB является лишь интерфейсом для базы данных Microsoft SQL Server 2008.
Аутентификация в базе данных выполняется с помощью встроенной аутентификации Windows.
Я создал системный DSN на рабочей станции. В окне подключения ODBC я выбираю APP1 в качестве имени сервера и могу выбрать базу данных (для наших целей мы будем называть ее тестовой) из раскрывающегося списка, и когда я закончу выбирать параметры, я проверяю соединение (тест работает ).
Я вошел в SQL и подтвердил, что у пользователя есть разрешения на вход в базу данных со своим именем пользователя Windows.
Когда этот пользователь (или другой пользователь) пытается войти в систему, они получают сообщение об ошибке ODBC - соединение с 'systemDSN' не удалось.
Я открыл файл ACCDB и открыл диспетчер связанных таблиц. Это показывает, что все базы данных указывают одно и то же имя DSN, которое я ввел на компьютере.
Мне не хватает чего-то очень простого? Любые идеи?
Я проверил журналы приложений и безопасности на рабочей станции и на сервере SQL и не увидел никаких попыток входа в систему.
Обновление 1:
Если мы добавим системный dsn в 32-битную версию ODBC, мы получим другую ошибку. Мы получаем ошибку: недопустимое использование Null, но в каждом поле что-то есть.
Если мы изменим системный dsn в 64-битной версии ODBC на dsn пользователя, мы также получим ошибку Invalid use of Null.
Оказывается, тот человек, который проектировал базу данных, использовал три уровня логинов.
Существует интегрированный вход в Windows, который сопоставляется с логином SQL. После этого есть еще один логин, который находится в одной из таблиц в SQL.