日期:2014-05-16  浏览次数:20682 次

win7 64位,在ODBC的DNS中对sql server配置成功,但连接失败
win7 64位下,在ODBC的DNS中对sql server 2008配置成功,但连接时失败;
但在32下却能连接成功。
64位下,错误提示为:Message: '[Microsoft][ODBC 驱动程序管理器] 无效的字符串或缓冲区长度'

网上查了下相关的解决方法,如下:

win2003 64位系统下ODBC连接使用 转自win2003 64位系统下ODBC连接使用 

环境

一般系统部署的服务器若是windows系统,就会采用64位win2003的结构。可是我们编写的程序绝大多数都是在x86下32位cpu架构中 编译的,要正常移植到64位机器还真的是很麻烦,不仅要求应用程序是64位模式编译,还需要数据库也得是64位,iis64位,framework64 位,好在相应的厂商都提供这些支持组件。不知道有人遇到过像我这样的问题么,应用中有需要增加一个Access数据库导入功能,这就需要连接ODBC的 mdb驱动,可是Microsoft OLE DB Provider for Jet不支持64位系统,即使安装了office2007后,发现ODBC也没有任何变化,这下尴尬了。

分析
对64位系统结构进行分析。

1.c盘下有两个程序安装目录:Program Files和Program Files (x86); 
2.windows文件夹下有两个目录:System32和SysWOW64; 
在System32中的odbcad32.exe中没有其他驱动(这也是控制面板中ODBC直接启动的程序),但是在SysWOW64下的 odbcad32.exe却存在mdb之类的所有驱动,这说明ODBC驱动在操作系统中是存在的,只是因为运行模式导致调用的odbc程序不同,造成找不 到对应的驱动。了解到这一点,就能找到解决方案:切换64位运行模式为32位。

解决步骤
 
切换IIS运行模式为32位
开始→运行→cmd,运行脚本:cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1,即可将IIS由64位切换为32位模式;若想恢复为64位模式,运行脚本:cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 0。若脚本报错,切换路径为C:\Inetpub\AdminScripts,因为adsutil.vbs文件在该路径下。

Asp.net运行模式为32位
重新注册asp.net,开始→运行→cmd,运行脚本:%SYSTEMROOT%\Microsoft.NET\Framework \v2.0.40607\aspnet_regiis.exe -i。若要注册64位,脚本为:%SYSTEMROOT%\Microsoft.NET\Framework64\v2.0.40607 \aspnet_regiis.exe -i。

重启机器,IIS即可运行32位的程序,ODBC的连接也生效了。



我按照该方法试了下:
1、“切换IIS运行模式为32位”成功;
2、“Asp.net运行模式为32位”失败,提示“该错误指示相应计算机上没有安装 IIS。请在使用此工具前安装 IIS”
    就没有尝试顺着这个路往下查找以解决

相信很多同学遇到类似的问题吧,
高手能否帮解决下,谢谢先~
55分全部奉献啦。。。
------解决方案--------------------
引用:
请教一下,我执行curs=fetch(curs);时的提示是这个,是什么原因呢?求助。
Undefined function or method 'fetch' for input arguments of type 'struct'.
这个问题你要考虑一下是否少了架构名,比如我写了个函数叫A,直接调用会说不存在,然后我加了DBO.A调用就可以了