【问题标题】:Docker for Windows & MS-Access database & Jet.OLEDB.4.0Docker for Windows & MS-Access 数据库 & Jet.OLEDB.4.0
【发布时间】:2018-10-25 02:54:47
【问题描述】:

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

我已经基于……创建了 docker 镜像

  • microsoft/dotnet-framework
  • microsoft/windowsservercore
  • microsoft/mssql-server-windows-express

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

“Microsoft.Jet.OLEDB.4.0”提供程序未在本地计算机上注册。

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

C:\Windows\SysWow64\regsvr32 Msjetoledb40.dll

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

我还安装了 32 位和 64 位的 Microsoft Access Database Engine Redistributable(2007、2010 和 2016)(AccessDatabaseEngine.exe 和 AccessDatabaseEngine_X64.exe),但总是遇到与上述相同的错误。

2007 Office System Driver: Data Connectivity Components

Microsoft Access Database Engine 2010 Redistributable

Microsoft Access Database Engine 2016 Redistributable

有什么想法吗?

【问题讨论】:

  • 嗨,David,我开发了一个简单的应用程序,可以连接到 MS-Access-2003 db,我可以在其中更改连接字符串。 Jet.Oledb 失败,Ace.Oledb 提供程序成功。但正如我在原帖中提到的,我无法更改旧版应用程序的连接字符串,因为它嵌入在 dll 中。我知道这可以在 64 位操作系统中运行,因为它在使用 Windows 10 64 位的开发计算机中运行良好,并且我的 dev.computer 已经在 SysWow64 中注册了 msjetoledb40.dll。这是真正的问题,因为我无法在任何 Win-Docker-Container 甚至 Hyper-V WinServerCore VM 中注册此 dll。发送

标签: c# docker ms-access oledb


【解决方案1】:

已解决:

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

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

RUN Jet40SP8_9xNT.exe /Q

【讨论】:

  • 我试过用这个,但是我的 dockerfile 卡住了
猜你喜欢
  • 1970-01-01
  • 2013-03-15
  • 2011-10-27
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多