通过使用“压缩和修复数据库”帮助防止和更正数据库文件问题
时 间:2008-11-02 13:49:46
作 者:Microsoft ID:11 城市:上海 QQ:3002789054
摘 要:通过使用“压缩和修复数据库”帮助防止和更正数据库文件问题
正 文:
数据库文件在使用过程中可能会迅速增大,它们有时会影响性能,有时也可能被损坏。在 Microsoft Office Access 中,您可以使用“压缩和修复数据库”命令来防止或修复这些问题。
本文并不解释如何备份或还原数据库。在请参阅部分中可以找到指向详细信息的链接。
压缩和修复数据库的原因
本概述介绍如何使用“压缩和修复数据库”命令来帮助防止和更正以下可能影响数据库的问题:文件在使用过程中不断变大;文件已损坏。
数据库文件在使用过程中不断变大
随着您不断添加、更新数据以及更改数据库设计,数据库文件会变得越来越大。导致增大的因素不仅包括新数据,还包括其他一些方面:
- Access 会创建临时的隐藏对象来完成各种任务。有时,Access 在不再需要这些临时对象后仍将它们保留在数据库中。
- 删除数据库对象时,系统不会自动回收该对象所占用的磁盘空间。也就是说,尽管该对象已被删除,数据库文件仍然使用该磁盘空间。
随着数据库文件不断被遗留的临时对象和已删除对象所填充,其性能也会逐渐降低。其症状包括:对象可能打开得更慢,查询可能比正常情况下运行的时间更长,各种典型操作通常似乎也需要使用更长时间。
注释 压缩数据库并不是压缩数据,而是通过清除未使用的空间来缩小数据库文件。
数据库文件可能已损坏
在某些特定的情况下,数据库文件可能已损坏。如果数据库文件通过网络共享,且多个用户同时直接处理该文件,则该文件发生损坏的风险将较小。如果这些用户频繁编辑“备注”字段中的数据,将在一定程度上增大损坏的风险,并且该风险还会随着时间的推移而增加。您可以使用“压缩和修复数据库”命令来降低此风险。
通常情况下,这种损坏是由于 Visual Basic for Applications (VBA) (Visual Basic for Applications (VBA):Microsoft Visual Basic 的宏语言版本,用于编写基于 Microsoft Windows 的应用程序,内置于多个 Microsoft 程序中。) 模块 (模块:存储在一起作为一个命名单元的声明、语句和过程的集合。有两种类型的模块:标准模块和类模块。)问题导致的,并不存在丢失数据的风险。但是,这种损坏却会导致数据库设计受损,例如丢失 VBA 代码或无法使用窗体。
有时,数据库文件损坏也会导致数据丢失,但这种情况并不常见。在这种情况下,丢失的数据一般仅限于某位用户的最后一次操作,即对数据的单次更改。当用户开始更改数据而更改被中断时(例如,由于网络服务中断),Access 便会将该数据库文件标记为已损坏。此时可以修复该文件,但有些数据可能会在修复完成后丢失。
提示 通过拆分数据库,可以将数据保存在用户无法直接访问的单独文件中,从而有助于防止数据库文件损坏并减少丢失的数据量。
Access 提示是否要修复已损坏的数据库文件
当您尝试打开已损坏的数据库文件时,系统将提示您是否允许 Access 自动修复该文件。此外,您也可以手动使用“压缩和修复数据库”命令修复并打开已损坏的数据库文件。
如果 Access 完全修复了已损坏的文件,它将显示一条消息,说明已成功完成修复,并且您应检查数据库内容以确保一切已恢复正常。
如果 Access 仅成功修复了部分内容,它将跟踪未能修复的数据库对象,以便您决定是否需要从备份进行恢复。
注释 可以设置一个数据库选项,从而在每次关闭特定的数据库时自动运行“压缩和修复数据库”功能。如果您是某数据库的唯一用户,则应设置此选项。在多用户数据库中,您可能并不想设置此选项,因为它会暂时中断数据库的可用性。
开始之前
开始执行压缩和修复操作之前,请考虑执行下列操作:
- 始终执行备份 在修复过程中,Access 可能会截断已损坏表中的某些数据。有时,您可以从备份来恢复此数据。除了定期备份策略外,还应该在使用“压缩和修复数据库”命令之前执行备份。可以使用“备份数据库”命令来执行备份:
- 单击“Office 按钮”,指向“管理”,然后在“管理此数据库”下单击“备份数据库”。
- 自动压缩和修复 除非您通过网络与其他用户共享一个数据库文件,否则应将数据库设置为自动压缩和修复。
- 请注意系统恢复错误表 当 Access 无法修复已损坏数据库文件中的全部对象时,它会在一个名为 MSysCompactErrors 的表中记下无法恢复的所有对象。如果存在错误,Access 会在数据表视图 (数据表视图:以行列格式显示来自表、窗体、查询、视图或存储过程的窗口。在数据表视图中,可以编辑字段、添加和删除数据,以及搜索数据。)中打开 MSysCompactErrors 表。
如果您的数据库备份是在数据库损坏之前创建的,则可以使用 MSysCompactErrors 表来确定要将哪些对象从数据库备份导入到修复的数据库中。
- 获取对数据库的独占访问权限以使用“压缩和修复数据库”命令 如果您是数据库的唯一用户,则可以跳过本部分中的其余内容,而直接转到压缩和修复数据库。
压缩和修复操作需要以独占方式访问数据库文件,因为该操作可能会中断其他用户。当您计划进行压缩和修复操作时,应通知其他用户,以使他们可以避开在该时间内使用数据库。
请告诉其他用户需要停止使用数据库的时间长短。如果您是定期进行压缩和恢复操作,请记录此操作所需的时间。这样,您就可以做出更准确的估计,以供其他用户参考。
- 获取足够的权限 (权限:一组属性,用于指定用户对数据库中的数据或对象所拥有的访问权限类型。)来进行压缩和修复操作 如果使用早期版本的数据库文件,并且您是工作组 (工作组:多用户环境中的一组用户,其中的成员共享数据和同一个工作组信息文件。)的成员,则可能无法独立压缩和修复数据库。如果您需要压缩和修复数据库,但没有足够的权限,请与工作组管理员联系以获取帮助。
压缩和修复数据库
关闭数据库时自动执行压缩和修复
如果要在数据库关闭时自动执行压缩和修复,可以选择“关闭时压缩”数据库选项。
注释 设置此选项只会影响当前打开的数据库。对于要自动压缩和修复的每个数据库,必须单独设置此选项。
- 单击“Office 按钮”,然后单击“Access 选项”。
- 在“Access 选项”对话框中,单击“当前数据库”。
- 在“应用程序选项”下,选中“关闭时压缩”复选框。
手动压缩和修复数据库
除了使用“关闭时压缩”数据库选项外,您还可以手动运行“压缩和修复数据库”命令。无论数据库是否已经打开,均可以对其运行该命令。此外,还可以创建对特定数据库文件运行“压缩和修复数据库”命令的桌面快捷方式。
压缩和修复已打开的数据库
注释 如果其他用户当前也在使用该数据库文件,则无法执行压缩和修复操作。
- 单击“Office 按钮”,指向“管理”,然后在“管理此数据库”下单击“压缩和修复数据库”。
压缩和修复未打开的数据库
注释 如果其他用户当前正在使用该数据库文件,则无法执行压缩和修复操作。当您进行压缩和修复操作时,其他任何用户均无法使用该数据库文件。
- 启动 Access,但不要打开数据库。
- 单击“Office 按钮”,指向“管理”,然后在“管理此数据库”下单击“压缩和修复数据库”。
- 在“压缩源数据库”对话框中,定位到要压缩和修复的数据库,然后双击它。
创建压缩和修复特定数据库的桌面快捷方式
您可以在桌面上创建一个可用于压缩和修复特定数据库的快捷方式。
开始之前,请验证 Msaccess.exe 文件在您计算机上所处的位置。Msaccess.exe 文件通常位于以下文件夹中:
C:\Program Files\Microsoft Office\Office12
如果在该位置找不到 Msaccess.exe 文件,请搜索该文件并记下它的完整路径。
创建桌面快捷方式
- 在桌面上单击右键,指向“新建”,然后单击快捷菜单上的“快捷方式”。
- 在“创建快捷方式向导”第一页上的“请键入项目的位置”框中,键入一个双引号 ("),输入 Msaccess.exe 文件的完整路径(包括文件名),然后键入另一个双引号。(您也可以单击“浏览”来定位并选择文件,此时会自动添加双引号。)
例如,键入:"C:\Program Files\Microsoft Office\Office12\msaccess.exe"
- 在右引号后面键入一个空格,然后键入要压缩和修复的数据库的完整路径。如果该路径包含空格,请在该路径两侧添加引号。再键入一个空格,然后键入 /compact。
例如,键入:"C:\My Folder\My Database.accdb" /compact
- 单击“下一步”。
- 在“键入该快捷方式的名称”框中,键入快捷方式的名称,然后单击“完成”。
该向导将创建快捷方式并将其放在桌面上。
- 每当要压缩和修复数据库时,只需双击该快捷方式即可。
提示 若要将该桌面快捷方式添加到“开始”菜单中,请右键单击该快捷方式,然后单击快捷菜单上的“附到「开始」菜单”。
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access判断多条明细的配方或订...(11.30)
- 如何让后台数据库在局域网共享时,且...(11.29)
- 【Access月初月末日期设置方法...(11.29)
- 【Access IIF函数嵌套示例...(11.26)
- Access快速开发平台--使用组...(11.25)
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)