Есть ли способ отключить безопасность кэша доступа в CurrentProject.AccessConnection.Properties? - PullRequest
0 голосов
/ 08 мая 2019

Я работаю с базой данных Access, которая связала таблицы с базой данных DB2 через соединение DSN ODBC.

Все таблицы используют один и тот же системный DSN, поскольку они находятся в одной и той же базе данных DB2. Чтобы получить одну группу таблиц, я использую системный DSN «A» с одним идентификатором пользователя и паролем, а для другой группы таблиц я использую тот же системный DSN «A», что и в первой группе таблиц, но с другим идентификатором пользователя. и пароль.

Это разрушило хаос в Access, поскольку, если я открою таблицу из первой группы, она будет кэшировать учетные данные, а затем, если я попытаюсь открыть таблицу из второй группы, не перезапуская Access, она выдаст ошибку Invalid credentials/username.

Используя этот ответ Я смог обойти это: я создал два разных соединения ODBC System DSN, по одному для каждой группы таблиц. Это позволяет мне открывать таблицы из любой группы без ошибок авторизации в одном сеансе (например, без перезапуска Access).

Мне было интересно, есть ли способ в Windows 10 и Office 365 (через vba, макрос AutoExec, изменение реестра, политики и т. Д.) Изменить поведение по умолчанию CurrentProject.AccessConnection.Properties("Cache Authentication") с True на False

Это свойство только для чтения после открытия базы данных.

Итак, у меня возникла еще одна мысль: если вы откроете удаленную базу данных с установленной False для проверки подлинности кэша и добавите ее в свою рабочую область в другой базе данных, сможете ли вы выполнять запросы через DAO в VBA в этой «удаленной» базе данных?

Например: база данных "A" имеет все связанные таблицы с DB2. Из другой базы данных "B" я открываю базу данных "A" и добавляю ее в рабочую область базы данных "B", для которой для проверки подлинности кэша задано значение false (<- возможно ли это?) Vía <code>OpenConnection? или OpenDatabase. Как только база данных «A» будет открыта из базы данных «B», смогу ли я запускать запросы «на лету» (то есть, не сохранять процедуры) в базе данных «B», используя VBA, ссылаясь на связанные таблицы в базе данных «A»?

UPDATE Согласно справочнику по Access 2003 VBA стр.556, невозможно указать дополнительные параметры, используя OpenConnection Snapshot from book

Этот вопрос уже задавался несколько раз:

1 Ответ

0 голосов
/ 09 мая 2019

К сожалению, я не знаю, это возможно.

Однако вы можете принять (и должны) принять DSN без подключений. Это, таким образом, устранит необходимость использования DSN. (в наши дни это боль - особенно с заблокированными машинами). И это позволит вам изменить логин / UID без необходимости повторной ссылки.

Однако вам все равно понадобятся два набора таблиц, если вам нужно одновременно работать с обеими базами данных. Вы также можете повторно запустить код ссылки, но, без сомнения, вы избегаете повторной ссылки и хотите просто поменять DSN.

Таким образом, вы МОЖЕТЕ сменить пользователя / пароль без повторной ссылки. Однако, если вам нужно переключить базу данных, на которую вы указываете? Обойти это невозможно - вы должны заново связать таблицы.

Таким образом, с JUST одним набором связанных таблиц вы можете снова войти в систему (с другим user / id), но для переключения базы данных, на которую вы указываете, вам необходимо повторно связать.

И нет, вы не можете очистить кеш паролей, если не выйдете и не загрузите доступ.

...