KB4484218 更新后 FireDAC MSAcc ODBC 驱动程序损坏
Posted
技术标签:
【中文标题】KB4484218 更新后 FireDAC MSAcc ODBC 驱动程序损坏【英文标题】:FireDAC MSAcc ODBC Driver broken after KB4484218 update 【发布时间】:2020-01-28 09:51:26 【问题描述】:我的解决方案使用 ms-access 数据库和 FireDAC 的“MSAcc”驱动程序来访问数据库 (*.mdb)。
我的一些客户在为 Office 安装 1 月 Windows 更新后遇到了问题 (KB4484218 - 请注意,根据计算机上安装的 Office 版本,相同的补丁可能会应用于另一个 KB。仅供参考我会在下面列出它们)。
以前在同一台计算机上运行的应用程序现在不再启动,并且在建立数据库连接时失败。 我已经回滚了这个特定的 KB,并且应用程序再次运行。 我知道至少有一家其他软件供应商受到此问题的影响。
我的问题如下:
还有其他人受此影响吗? 有人知道这是与 FireDAC 相关还是更广泛的问题? 有人能从 Embarcadero 或 Microsoft 找到这方面的信息吗?据我所知可能引发此问题的更新:
Office 2010:Office 2010 安全更新说明 (KB4484127)
Office 2013:Office 2013 安全更新说明 (KB4484119)
Office 2016:Office 2016 安全更新说明 (KB4484113)
Office 2016 (KB4484218) 32 位版
Office 2016 (KB4464586) 32 位版
Office 2016 (KB4484168) 32 位版
更新: 根据要求,这里有更多关于此问题的上下文和信息。
FDConnection1.Params.DriverID := 'MSAcc';
FDConnection1.Params.Database := Edit1.Text; //path to .mdb file
FDConnection1.Open;
FDQuery1.Connection := FDConnection1;
FDQuery1.SQL.Add( 'SELECT * FROM ' + edit3.Text); //insert column name
FDQuery1.open;
FDQuery1.first;
ShowMessage(FDQuery1.FieldByName(edit2.Text).AsInteger.ToString);
FDConnection1.Close
在未安装 KB4484218 的系统上执行上述代码,一切正常,应用程序显示该值。 但是,在应用 KB4484218 后在同一台机器上执行相同的代码时,我在 'ACECORE.DLL' 上遇到访问冲突
这与 Microsoft 的 KB4484218 发行说明一致,表明此特定 DLL 已被修改。
我敢打赌,MS 确实修改了 MS Access 驱动程序的这个组件。因此至少破坏了 FireDAC 的实现。
【问题讨论】:
你需要让你的q更清晰。当我认为您的意思是“开始”时,您会使用“靴子”一词。但是,即使您进行了更改,它似乎也不正确,因为如果您的应用程序无法启动,它就不会尝试打开与数据库的连接,所以您怎么知道那会失败。 您能否更准确地描述 Firedac 的 MSAcc 驱动程序的问题?直到今天我还看不到任何问题,但我们在这里使用的 Office 2019 可能不会受到影响。 “建立数据库连接时失败”可以从显示任何错误消息或描述它如何失败中受益。 @SchneiderInfosystemsLtd 请看我上面的消息,我添加了“更新”部分。 @Brian 刚刚更新了我上面的帖子。 【参考方案1】:今天我遇到了完全相同的问题,我解决了它,如下所示:
-
将
FDPhysMSAccessDriverLink
组件放在表单上。
将ODBCDriver
属性设置为Microsoft Access Driver (* .mdb)
这解决了问题,因为那时 ODBC 使用的是 Microsoft 没有搞砸的旧 DLL。
【讨论】:
这工作并解决了问题。当使用 FireDAC 和 KB4484218 时。 对。如果您仍处于开发阶段,这将有效。如果像我一样,您的应用程序已经部署到数百个客户的站点,这不再是一种选择。以上是关于KB4484218 更新后 FireDAC MSAcc ODBC 驱动程序损坏的主要内容,如果未能解决你的问题,请参考以下文章
使用 FireDac 仅更新重复行中的 1 个(无主键或唯一字段)
关于DBX Framewrok 和 FireDac 的一点随笔