询问者
在基于C2R安装方式的Office 2019或Access Runtime环境下,如何书写Connection String?

问题
-
首先,我不得不吐槽一下,我不明白微软弄出个有别于以往Windows Installer方式的C2R安装方式有何意义?光是安装过程中可能产生的冲突就搞得人仰马翻,而99%的Office用户只不过需要能够“打打字、画画表格”就够了,他们连Office的10%功能都用不全,他们不关心怎么安装更不关心用到的程序是不是最新的,而真正让Office发挥巨大功效的是我们这帮程序员,可是微软在推出新举措时对程序员却不够友好,或者说支持是相当滞后的。我这个小问题搜索遍了全网都没有找的答案,不论是用英文还是中文。最后是问到微软的人工支持,也没问出来个所以然,进而让我到这里来发帖……
好吧,我来描述一下我这个问题,看看有没有大神出现。
1、Office 2016起就有C2R的版本,只不过很少见,而Office 2019和365则完全是C2R安装,我不得不在基于C2R安装的环境下使用Access数据库;
2、Access 2019版本并没有较2016版本有巨大提升,主版本号还是16.0;
3、C2R安装下,包含ACEOLEDB.DLL等诸多数据引擎文件的位置已不同于Windows Installer安装时的文件夹位置,且在注册表中没有Access Connection Engine常规注册项(这是发生问题的关键原因);
4、我有基于.Net Framework 4.8 C#编写的应用程序,需要在有Office 2019或Office 365 Access Runtime的环境下通过OLEDB访问Access数据库(不用考虑32位和64位可能造成的问题);
5. 程序中以往的connection string的写法是Provider=Microsoft.ACE.OLEDB.16.0; Jet OLEDB:Registry Path=Software\Microsoft\Office\16.0\Access\Access Connectivity Engine; ……
问题来了,连接数据库时发生错误,提示“Microsoft.ACE.OLEDB.16.0没有注册”,怎么解决?谢谢!
全部回复
-
你好,
感谢你到当前论坛发帖与我们一起讨论你所遇到的问题。但是这并不也是一个开发者论坛。当前论坛主要是面向IT管理员的,用来讨论桌面端Office产品的部署、安装、激活、应用等相关的一般问题。对于你所说的Access开发相关的问题,我建议你使用英文在Access开发论坛 Access for Developers发帖求助。或许,你可以在哪里获得更多有帮助的回复。
我能理解你的感受。一项新的技术的推广使用或多或少对已有的开发设计产生一定的影响,之前使用的有些方法可能也会失去作用。
对于你所说的“Microsoft.ACE.OLEDB.16.0没有注册”问题,我在网上看到有用户通过安装Microsoft Access Database Engine 2016 Redistributable 或 Microsoft Access Database Engine 2010 Redistributable解决了这个问题。你可以尝试下。
如果你有任何进展,请在下方回复以告知我们。
此致,
敬礼
Herb
如果以上回复对您有所帮助,建议您将其标记为答复。如果您对我们的论坛支持有任何的建议,可以通过此邮箱联系我们:tnsf@microsoft.com.
-
Herb Gu,谢谢你的回复!
我的程序支持Access从2003一直到2016,就是不支持2019。我要解决的问题就是如何在只有2019的环境下成功连接数据库。
365、2019都是C2R安装模式,而ACE 2016或2010 Runtime都是MSI的,在已有2019的系统中是不被允许安装的,有冲突。你提到的有人通过2016或2010解决问题,多半是因为他们的系统里没有2019,那当然是可以的。
或者是修改2016或2010的安装包中的configuration.xml文件来强制安装,这只是猜测,而据我自己实验2016安装包是做不到的,相必微软也绝不支持这种做法。即使成功,这导致系统不稳定也是必然的。
- 已编辑 麦田圈 2019年9月5日 9:31 提示回复者
-
你好,
很抱歉,我没有及时看到你的回复。我非常能理解你的感受。针对你的问题,我还是建议你到Access开发者论坛去提问求助。如之前所说当前论坛,主要是帮助IT管理员解决Office桌面端应用一般问题的。
感谢你的理解与支持。如果你有任何进展或者补充,都可以在下面回复与我们分享。
此致,
敬礼
Herb
如果以上回复对您有所帮助,建议您将其标记为答复。如果您对我们的论坛支持有任何的建议,可以通过此邮箱联系我们:tnsf@microsoft.com.