Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > 综合其它

【翻译】网络中的后端Access文件频繁损坏,提示“无法识别的数据库格式”

时 间:2020-04-14 09:48:19
作 者:金宇   ID:43  城市:江阴
摘 要:1.最近后端Access文件频繁损坏,有时一天可能达到二三次。

2.Access前端文件会报告错误3343 “无法识别的数据库格式”或打开后端Access文件会提示“ Microsoft Access已检测到该数据库处于不一致状态的数据库,并将尝试恢复该数据库…… ”。
正 文:

网络\操作系统\Access配置前提说明:

局域网多人使用,Access前后端分离,后端Access文件通过共享放在文件服务器上,Access前端文件在每个客户端电脑上都有一份,客户端使用WIN10操作系统,之前Access文件一直正常运行好几年或者平均每年也就损坏一两次。


问题:

1.最近后端Access文件频繁损坏,有时一天可能达到二三次。

2.Access前端文件会报告错误3343 “无法识别的数据库格式”或打开后端Access文件会提示“ Microsoft Access已检测到该数据库处于不一致状态的数据库,并将尝试恢复该数据库…… ”。

通常这些都是长期存在的数据库,这些数据库突然显示出此类问题。


微软对此问题回应及临时解决方法:

这是由于Access数据库引擎中带有网络文件的使用模式引起的,这些使用模式不会导致Windows早期版本出现问题,但无法正常工作。特别是在Windows 10上,使用版本1803时首先会注意到此问题(实际win10版本1803-1809都有可能出现此问题)。

微软终于通过其“Access近期问题的修复或解决方法”发布了一些信息,您可以使用以下链接:

访问报告数据库处于“不一致状态”
他们正在推广DisableLeasing注册表作为临时解决方案,并提供了实现它的步骤(所有内容均在上面提供的链接中进行了说明)。

警告:

有关此替代方法的警告。今天,我在客户端上实现了它,他们所有PC的映射驱动器突然停止工作。服务器的登录凭据已丢失。因此,请确保您已准备好解决此问题。您只需要拥有凭据并重新输入它们,一切都应该可以再次使用,但是要计划还要麻烦得多。我被告知这不应该发生,但是确实发生了,这是唯一的更改,因此很明显是原因。
另外,有些人报告说此更改对其整体网络性能产生了负面影响,但这并不是每个人都如此,因此您需要自己进行测试和观察。


其他替代临时解决方法:
Microsoft提出的解决方法(实际上是社区用户在第一次报告该错误的第一次讨论中发现),它是一种可能的解决方案,但它也有缺点:在拥有后端的PC / Server上需要管理特权,似乎会导致某些性能问题。

因此,我认为我会发布其他解决方案,这些解决方案已在社区对此主题的讨论中浮出水面,并据报已解决了该问题。

1.回滚最初导致问题的错误更新
这很明显,如果您将Windows回滚到1709,则在有缺陷的bug出现之前,您根本就不会遇到问题。

2.新建一个文件夹
听起来令人惊讶,现在,多个用户已经确认,只需在同一驱动器上创建一个新文件夹并将其数据库移动到新文件夹即可解决此问题。

3.更改客户端的文件缓存
这是另一种注册表设置方法,但是有所不同,该注册表不需要任何管理特权。缺点是您必须将其应用于每台Windows 10 PC,而不是服务器。
注册表设置为:
Windows注册表编辑器版本5.00
[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanWorkstation \ Parameters]
“ FileInfoCacheLifetime” = dword:00000000
“ FileNotFoundCacheLifetime” = dword:00000000
“ DirectoryCacheLifetime” = dword:00000000
您将其保存到bat文件中,然后简单地执行它,瞧,再也没有问题了。到目前为止,还没有人报告过此修复程序的任何性能问题,这与官方MS批准的方案不同。

4.切换到使用MDB
Jean-David在下面的评论中建议从使用accdb转换为mdb文件格式已为他解决了损坏问题。


永久解决方案:
通常,我们会等待Microsoft提出修复程序,以解决问题,但是此问题已经存在了一年多,并且没有任何迹象表明很快就会有适当的修复程序。尽管注册表黑客的变通办法行之有效,但它可能会影响网络性能,有些人对此实施并不满意,……好吧,我想我会提出另一个永久性的解决方案,将后端迁移到SQL Server(或SQL Server Express)免费)或任何其他RDMS。通过迁移,您可以解决整个问题,并可能在其他方面有所收获(不再受用户限制,可以在WAN上使用……)。当然,您可能需要调整前端以使其与SQL Server一起正常使用,因此这不是您刚接触的内容。您需要放大BE,然后进行全面测试,以便发现问题并加以纠正。
因此,如果您厌倦了等待Microsoft解决他们所创建的问题并且似乎不急于解决的话,请考虑将您的后端Access升级到SQL Server。





Access软件网官方交流QQ群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助