MS Access 无法链接到加密的后端数据库

Posted

技术标签:

【中文标题】MS Access 无法链接到加密的后端数据库【英文标题】:MS Access Can't Link to Encrypted Backend Database 【发布时间】:2012-03-07 19:14:39 【问题描述】:

我有一个难题。我已经开发了一个 Access 应用程序,我正准备分发它。我刚刚拆分了数据库。 (我知道,有人说我应该从一开始就开发它......我没有)我还刚刚加密了后端数据库。在前端,我已链接到后端并在提示时输入了正确的密码。链接表现在出现在我的前端数据库中。但是,当我尝试访问其中一个链接表时,我会收到一条弹出消息,其中仅显示“密码无效”。

我已尝试删除链接表并重新链接。我试过更新链接。似乎没有任何效果。我所做的每一次搜索都假定链接是在加密发生之前创建的,并且没有输入密码。这不是这里的情况。

有人可以帮忙吗?

Windows 7 - 访问 2010

多人

【问题讨论】:

OOOOOPPPPPSSSS!!!!好的,我发现了问题。 Access 不喜欢使用其他字符。我的密码中有一组括号。删除它,一切都很好! :-) 愿意。我试图发布作为答案,但我的排名不足以回答我自己的帖子! ...这对我来说似乎有点傻... :-) 【参考方案1】:

来自 cmets

噢噢噢噢噢噢噢噢噢噢!!!!好的,我发现了问题。访问不喜欢 使用其他字符。我的密码中有一组括号。 删除它,一切都很好! :-)

– 多头

【讨论】:

密码也不能太长(我不知道限制,但是24字符的密码不行,8字符的密码可以)【参考方案2】:

我想补充一点;后端表连接的密码可以在 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

【讨论】:

虽然,再三考虑,答案不适用于 OP。我想这是一个单独的“困境”...... 我想在这里发布这个答案,因为我在寻求加密后端时遇到了这个话题。如果我记得它在 Google 搜索结果中的排名很高。感谢您将代码的增强版本放入!我希望它也对其他人有用:)【参考方案3】:

当我在使用 Access 2013 时遇到类似问题时,我遇到了这个线程。我已成功加密后端。每次打开后端,我都可以使用我用来加密后端的密码成功打开后端。

所以,我打开了前端,删除了之前链接的表,然后重新链接到新加密的后端。正如预期的那样,在链接过程中,它要求我输入后端的密码。我输入了正确的密码(我知道它是正确的,因为我粘贴了它而不是输入它)并且一切似乎都正常工作。这些表都显示在前端的对象列表中。但是,如果我尝试打开链接表,我会收到一个消息框,指出“密码无效”。

在访问了一些其他线程后,我尝试在后端使用没有任何特殊字符且没有任何空格的密码。然后重新链接那些在前端。快!这样就解决了问题。

因此,如果您在前端收到“无效密码”,即使您自己手动加载后端也可以正常打开,请尝试以下操作:删除后端密码中的任何空格或标点符号然后在前端删除并重新链接链接表。

【讨论】:

以上是关于MS Access 无法链接到加密的后端数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何在拆分数据库中将表从前端链接到后端(MS Access 2010)

将 MS Access 用作 Winform 或 WPF 的后端时如何避免损坏 MS Access

从 MS Access 访问 .mdb 文件中的后端表

如何防止最终用户在 MS Access 2010 应用程序中从前端查看后端数据?

重新链接表后重新查询表单

多个 MS Access 前端连接到单个远程 SQL Server 后端