我的问题是我无法通过Access运行时32位连接到SQL Server Express 2008 64位数据库,无论是通过Windows身份验证还是通过SQL身份验证。
在Windows 2011 Small Business Server上运行Windows 7 Prof. 32位的虚拟机。从这个Windows我测试了我的Access应用程序。使用(32位)SQL驱动程序11,它工作正常。
使用64位SQL驱动程序11的64位Windows 7 Prof.客户端使用的相同Access应用程序因SQLState 08001错误而失败。
我不明白的是,ODBC连接测试成功,数据链接(UDL)成功,但不是我的Access应用程序。 启动应用程序时,第一件事是通过passthrougquery运行存储过程并从SQL数据库中的某个tbl获取数据。这个SP带来了连接错误,但没有来自Access的运行时错误(我甚至删除了错误处理程序!)。
那么,如何在Access应用程序中找到原因或任何错误(如果有的话)?
我无能为力,因为我知道要测试或做的事情我已经尝试过让应用程序运行。因为我甚至无法在32位中安装SQL驱动程序11,所以它不应该是与驱动程序相关的错误。
有没有人知道一个测试应用程序,我不仅可以连接,而且可以从SQL数据库或任何其他技巧中检索数据来检查对数据库的访问? 谢谢你的帮助!
答案 0 :(得分:0)
Access通常作为32位应用程序安装。因此在64位计算机上它将使用32位子系统。在Windows 7上,ODBC数据源管理器实用程序的所有默认快捷方式都将导致其64位版本。无论您看到或配置的是什么,都完全无关紧要,因为您的32位无法访问它。
<强>解决方案:强>
您需要明确打开32位版本的ODBC Admin实用程序并在那里配置数据源。
要确保获得正确的版本,请使用Windows资源管理器并打开此文件:C:\WINDOWS\syswow64\odbcad32.exe
答案 1 :(得分:0)
嗯,同时我发现,当尝试使用像这样的连接时,连接失败了&#34; ODBC; DSN = MyDSN; .....&#34;但是当我通过连接&#34; ODBC; DRIVER = SQL Server Native Client 11;服务器= myServer上; ....&#34;
也许这就是你在说什么。当我只使用DSN时,它会使用错误的版本。
所以我会尝试这个:删除我的DSN,打开odbcad32.exe并再次创建相同的DSN。
如果我理解你是正确的,那么Win 7会提供正确的驱动程序并将其存储在DSN中。通过Access调用此DSN将导致正确的设置。
进一步的问题是,我的SSQL-Server实例不在端口1434,并且SQL Server Native Client 11驱动程序没有更多Clientconfiguartart来设置静态端口。所以我找到了一个字符串解决方案&#34; MyServer \ Myinstance,15999&#34;。
我希望在DSN中接受此端口设置,否则我真的必须更改为DSN-less,由于开发和生产的服务器不同,因此更复杂。 谢谢你。回复。