Docker 用于 Windows & MS-Access 数据库 & Jet.OLEDB.4.0

Docker for Windows & MS-Access database & Jet.OLEDB.4.0

我需要设置一个 docker 容器,其中遗留应用程序需要连接到 MS-Access 2003 数据库。数据库的连接字符串嵌入在应用程序本身中,因此无法更改。所以我也不能将提供者更改为 ACE.OleDb

我已经根据……

创建了 docker 个图像

…但是当 运行 容器上的遗留应用程序时,我总是得到相同的结果。

The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.

我还尝试在容器中使用以下命令在 SysWow64 中注册 msjetoledb40.dll ...

C:\Windows\SysWow64\regsvr32 Msjetoledb40.dll

...但似乎也不起作用。

我还安装了 32 位和 64 位(AccessDatabaseEngine.exe 和 AccessDatabaseEngine_X64.exe)的 Microsoft Access 数据库引擎可再发行组件(2007、2010 和 2016),但总是出现与上述相同的错误。

2007 Office System Driver: Data Connectivity Components

Microsoft Access Database Engine 2010 Redistributable

Microsoft Access Database Engine 2016 Redistributable

有什么想法吗?

已解决:

我找到了一个“Jet 4.0 Service Pack 8 (SP8) for Windows 95/98/NT 4.0 (KB829558)”包。

Jet40SP8_9xNT.exe 复制到容器中并将此语句添加到 dockerfile

RUN Jet40SP8_9xNT.exe /Q