在Windows 2003 64位下ASP无法连接Access数据库的问题
近日龙山网络在维护朋友网站东平人才网中发现当服务器版本是win2003 64位时,平常用到的 Provider = Microsoft.Jet.OLEDB.4.0;Data Source = 肥城网站建设.mdb" 这种连接数据库的方法不起作用了。
是什么样原因呢??
经过本人不断的排查各种可能出现的错误,比如:开启asp脚本语言,启用父路径等。仍然无法找到原因,最后经过查询微软技术文档显示,2003中没有内置 Microsoft.Jet.OLEDB.4.0驱动,因为以前做网站我都用mssql 数据库所以一直没遇到这方便问题。
经过龙山网络不断调试程序,终于发现解决方案,现公布如下,希望看到的同行可以借鉴吧。
引发原因:IIS是以64位方式来运行的,它只能加载64位模块,不能加载32位模块。而访问access数据库的jet引擎只有32位的,没有64位,因此无法被IIS加载。
解决步骤::在命令行窗口输入
第一步: cscript C:\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
第二步:iis web扩展中 允许32 位.net 即可。
上面方法的负面效应:因为IIS被改成以32位方式运行,所以它只能加载32位模块。如果改之前,IIS加载了其他64位的模块,则改之后就无法加载这个模块了。如果想继续使用这个模块的功能,只能寻找这个模块的32位版本并加载。
如果希望IIS重新以64位方式运行,可以输入
cscript C:\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 0
以上都是龙山网络在实际开发中遇到的问题笔记。转载请注明:肥城网站制作 龙山网络公司。
|