MS Access не может связаться с зашифрованной серверной базой данных - PullRequest
4 голосов
/ 07 марта 2012

У меня есть недоумение. Я разработал приложение Access и готовлюсь к его распространению. Я только что разделил базу данных. (Я знаю, некоторые говорят, что я должен был разработать его с самого начала ... я не сделал) Я также только что зашифровал базу данных бэкэнда. В веб-интерфейсе я связался с бэкэндом и ввел правильный пароль при появлении запроса. Связанные таблицы теперь появляются в моей базе данных fronend. Однако, когда я пытаюсь получить доступ к одной из связанных таблиц, я получаю всплывающее сообщение, которое просто говорит: «Недействительный пароль».

Я пытался удалить связанные таблицы и заново связать их. Я пытался обновить ссылку. Ничто не похоже на работу. Каждый поиск, который я проводил, предполагает, что ссылки были созданы ДО того, как произошло шифрование и пароль не был введен. Здесь дело не в этом.

Может кто-нибудь помочь, пожалуйста?

Windows 7 - Access 2010

Multiguy

Ответы [ 3 ]

3 голосов
/ 14 сентября 2012

из комментариев

OOOOOPPPPPSSSS !!!! Хорошо, я нашел проблему. Доступ не нравится использование других персонажей. У меня был набор скобок в моем пароле. Убрал то и все хорошо! : -)

- MultiGuy

1 голос
/ 30 июля 2014

Я сталкивался с этой темой, когда у меня была похожая проблема с Access 2013. Я успешно зашифровал бэкэнд.Каждый раз, когда я открывал бэкэнд, я мог успешно открывать бэкэнд, используя пароль, который я использовал для шифрования бэкэнда.

Итак, я открыл веб-интерфейс, удалил ранее связанные таблицы и снова связался снедавно зашифрованный бэкэнд.Как и ожидалось, во время процесса связывания он спросил у меня пароль к бэкэнду.Я ввел правильный пароль (я знаю, что он был правильным, потому что я вставил его вместо того, чтобы набирать его), и все, казалось, работало правильно.Все таблицы отображаются в списке объектов в веб-интерфейсе.Однако, если бы я попытался открыть связанную таблицу, я получил бы сообщение с сообщением «Неправильный пароль».

После посещения некоторых других потоков я попытался использовать пароль в бэкэнде, который не имел никакогоспециальных символов и не было пробелов.Затем перепривязать тех, кто находится в интерфейсе.Presto!Это решило проблему.

Итак, попробуйте следующее, если вы получаете «Не верный пароль» во внешнем интерфейсе, даже если вы можете просто прекрасно открыть бэкэнд, если загружаете его вручную: Устранитьлюбые пробелы или знаки препинания из внутреннего пароля, а затем удалить и заново связать связанные таблицы в веб-интерфейсе.

1 голос
/ 07 ноября 2013

Я бы хотел добавить к этому; пароль для подключения к внутренней таблице может быть обновлен в макросе VBA. Добавьте следующие строки и замените имя связанной таблицы и пароль.

 Dim cdb As DAO.Database
 Set cdb = CurrentDb
 cdb.TableDefs("Projects").Connect = "MS Access;PWD=PaSsWoRd;DATABASE=C:\Users\bob.smith\Desktop\Split\Database_NEW_be.accdb"
 cdb.TableDefs("Projects").RefreshLink

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

Дублируйте вышеуказанные строки для каждой связанной таблицы и дайте макросу пройти. Связанные таблицы должны возобновить работу после этого.


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

Public Sub RevisePasswordForLink()
    Dim cdb As DAO.Database
    Set cdb = CurrentDb
    Dim tdf As TableDef, colTdf As TableDefs, strConnect As String
    Set colTdf = cdb.TableDefs

    strConnect = "MS Access;PWD=paSsWoRd;" _
             "DATABASE=C:\Users\bob.smith\Desktop\Split\Database_NEW_be.accdb"

    For Each tdf In cdb.TableDefs

      ''I believe best to skip the hidden tables ("MSys*")
      If Not tdf.Name Like "MSys*" Then

          ''If your DB has any local tables, you can save yourself some errors
          ''by filtering them out (similar to hidden tables).

          cdb.TableDefs(tdf.Name).Connect = strConnect
          cdb.TableDefs(tdf.Name).RefreshLink

          Debug.Print "  " & tdf.Name

      End If
    Next tdf
    Set cdb = Nothing
    Debug.Print "FINISHED "
End Sub
...