多年来,我们一直在使用OPENROWSET函数T-SQL和Microsoft.Jet.OLEDB.4.0提供程序来将其读入Access 2数据库中(超过10年)。是的,我们意识到Access 2的历史非常悠久,但是我们的客户已经使用我们的旧系统已有数十年之久,无法升级也不会升级。这也用于将它们升级到使用所有SQL Express的当前版本。
Microsoft在2019年9月12日发布了一个更新(Win 7为4486563,Win 10为4487017),该更新为我们打破了OPENROWSET函数。失败,并显示此错误...“”链接服务器“(null)的OLE DB提供程序” Microsoft.Jet.OLEDB.4.0“报告错误。提供程序报告了意外的灾难性故障。”我们确定这肯定是此更新,因为有问题的计算机有此更新,然后在卸载后,问题就消失了。
并非所有计算机都受影响。我们的开发计算机(Win 7)进行了更新,并且仍然能够毫无问题地运行该软件。我们还发现,并非所有Win 10计算机都受到影响。胜利8似乎不受影响。这是无处不在的零售软件。它不仅是内部的,所以我们无法控制他们的硬件或操作系统的选择。
从过去使用函数开始,我们知道有关在SQL SERVER实例上启用临时权限并为SQL Server的OLE DB提供程序创建正确的注册表项的知识。在受影响的计算机上,所有这些对我们看来都是正确的。通过查看该特定版本的清单,我们怀疑这两个更改的文件可能是导致问题的文件之一,但是我们无法在受影响的计算机(C:\ Windows \ SysWOW64 \ Msjet40.dll和C:\ Windows \ SysWOW64 \ Msjetoledb40.dll)。
有其他人遇到这个问题吗?或者其他人能想到我们可以检查/研究/研究的其他东西吗?或者我们可以联系的人?