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

6
我正在尝试在我们的64位服务器上搭建一个新的DotNetNuke网站,但遇到以下错误消息:
“‘Microsoft.Jet.OLEDB.4.0’提供程序未在本地计算机上注册”
我从经验中知道,在64位机器上针对64位程序集时会遇到这个问题(目前没有64位OLE-DB提供程序)。在这种情况下,我只需要在Visual Studio中选择x86作为目标平台,一切都能正常工作。
但在这种情况下,该网站使用动态编译,所以没有简单的地方可以指定我需要针对x86。你有什么想法吗?
谢谢。

我知道这可能是一个愚蠢的问题,但服务器上安装的MDAC版本是否正确? - David
是的,这不是一个愚蠢的问题。我在这里运行了一堆其他网站,但它们没有使用动态编译,我也不认为它们使用Jet。无论如何,DLL实际上存在于该框中,并且与2003 SP2版本一致。 - Chris B. Behrens
为什么它会尝试使用Jet/OLEDB呢?它应该直接连接到SQL Server。你在连接字符串中使用了什么? - EfficionDave
3个回答

8

您可以将运行该站点的应用程序池更改为以32位应用程序运行。在IIS7管理器中,它在您的应用程序池的“高级设置”下,然后将“启用32位应用程序”设置为true。

您也可以使用AppCmd从控制台执行以下操作:

appcmd apppool set /apppool.name:MyNukeSite /enable32BitAppOnWin64:true

在IIS6中,您可以尝试像这样的内容(这里有2行,完成更改元数据值后运行aspnet_regiis)...
cscript %SystemDrive%\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 1
aspnet_regiis.exe -i

更多信息请参见以下链接:


听起来我们肯定在正确的轨道上,但这是IIS 6.0。这是我可以直接在元数据库中编辑的吗? - Chris B. Behrens
再次感谢 Stack Overflow 帮我解决了这个晦涩难懂的问题,点赞! - Mercurybullet

3
嗨,现在微软发布了2010 Office System Driver Beta:数据连接组件,支持32位和64位操作系统。因此,使用此驱动程序而不是传统的Microsoft.Jet.OLEDB.4.0驱动程序将为我们提供在64位服务器上运行的64位应用程序(这正是我们所需要的)。
尽管这是测试版,但对我来说工作得很好。
您可以从2010 Office System Driver Beta: Data Connectivity Components下载此驱动程序。
谢谢

1

你不应该尝试将你的应用程序针对32位系统进行优化,否则你会失去使用64位系统的优势。正如aaa所指出的那样,你可以使用最新的Access Database Engine 2010来解决这个问题。请参考我的博客文章获取完整的解决方案。

希望能对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接