拆分MS Access DB需要紧凑/修复以及前后端的重新连接,为什么?

时间:2014-09-23 16:43:59

标签: forms ms-access frontend backend

我有一个ACCDB,我前一段时间拆分,其中包含许多带有子表单的表单(基于表格)和BE中的200多个表格(几乎所有表格都是车辆对象的查找表格)和400多个查询。还碰巧存在另一个ACCDB,其中有一个表,其中有6.5M行,FE链接到基本历史信息。两个后端不以任何方式相互链接。 FE为14MB,BE为1.2G,单表DB为900MB,所有主键和索引都设置得恰当。 DB是100%标准化的。 BE每个月都会增长5%。该数据库目前将在今年晚些时候迁移到Oracle 11G环境。

问题: 我最近发现,如果我压缩并修复后端或前端,那么任何包含子形状的形式都不会打开;整个FE只是冻结成白色。即使所有3个都被修复,我仍然有问题。但是如果我压缩/修复所有3 以及将整个前端重新连接到两个后端,则表格突然开始工作。直到最近才开始这种行为。

为什么我必须重新链接才能使表单再次运行?

2 个答案:

答案 0 :(得分:2)

在C + R之后,您不必在此处重新链接任何内容。

唯一想到的是,正在进行C + R的用户在发生C + R的文件夹或目录中具有一些限制权限。

请记住,当用户执行C + R时,会创建文件的COPY - 因此可能会在创建新文件时继承CURRENT用户的权限。因此,听起来文件夹上存在一些权限问题,或者正在执行C + R的用户具有一些特殊(不同)权限。 (也许某些继承权限会对某些安全组的成员资格产生影响)。

当然应该确保使用UNC路径名,当然前端需要放在每台机器上。

执行C + R的用户可能再次具有“不同的”驱动器映射,因此由于不同的驱动器号而导致到后端数据库的链接是错误的。所以,如果还没有,作为一般规则,我会强烈避免驱动器号并使用NC路径名(如果你还没有)。

如果您使用的是UNC路径名,那么可能的问题就是权限。

执行C + R的新用户还有可能从“非”受信任位置运行前端。

另外,650万行的表似乎有点大,我假设1.2 Gig大小在C + R之后是正确的? (但这个问题是另一篇文章)。

这表明驱动器映射问题,权限问题,或者启动应用程序的用户可能会搞乱引用。我将旁路转移到应用程序中,并确保执行C + R的用户可以编译应用程序,并且将从VBA编辑器中小心地注意,例如,办公室14引用不是高举到办公室15引用。

答案 1 :(得分:0)

您已经无法轻松到达"无忧无虑的"作为数据库的Access的可行性(与#34;记录的#34;)相反。记住需要编译的查询,这意味着解析所有表链接,并验证现有索引和其他元数据。通过手动使用链接表管理器简单地覆盖这些信息可能会更有效。

这里有一些可能会帮助你的规定技巧: http://office.microsoft.com/en-gb/access-help/improve-performance-of-an-access-database-HP005187453.aspx

还有一些...... http://www.fmsinc.com/MicrosoftAccess/Performance.html#Linked%20Tables

来自此网站的相关主题: Proper way to program a Microsoft Access Backend Database in a Multiuser Environment

可能对您没有帮助的问题:

  • 不充分限制数据集的查询,尤其是那些运行动态集的
  • 支持的数据库文件在Windows文件夹结构中位置太低(越高越好)

正如第二个链接所暗示的那样,事实上有很多变量在起作用,解决这个问题需要一些修改,试用和试验。错误发挥了重要作用。

所有这些,或者你可以升级到SQL Server Express :) http://office.microsoft.com/en-gb/access-help/move-access-data-to-a-sql-server-database-by-using-the-upsizing-wizard-HA010275537.aspx