Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自MS Access 2010运行时的SQL错误SQLState 08001 32位_Sql_Sql Server_Ms Access 2010 - Fatal编程技术网

来自MS Access 2010运行时的SQL错误SQLState 08001 32位

来自MS Access 2010运行时的SQL错误SQLState 08001 32位,sql,sql-server,ms-access-2010,Sql,Sql Server,Ms Access 2010,我的问题是,我无法通过Access运行时32位连接到SQL Server Express 2008 64位数据库,无论是通过Windows身份验证还是SQL身份验证 在Windows 2011 Small Business Server上运行一台带有Windows 7 Prof.32位的虚拟机。从这个窗口,我测试了我的Access应用程序。使用(32位)SQL驱动程序11,工作正常 使用64位SQL驱动程序11从64位Windows 7 Prof.客户端使用的相同Access应用程序失败,并出现

我的问题是,我无法通过Access运行时32位连接到SQL Server Express 2008 64位数据库,无论是通过Windows身份验证还是SQL身份验证

在Windows 2011 Small Business Server上运行一台带有Windows 7 Prof.32位的虚拟机。从这个窗口,我测试了我的Access应用程序。使用(32位)SQL驱动程序11,工作正常

使用64位SQL驱动程序11从64位Windows 7 Prof.客户端使用的相同Access应用程序失败,并出现SQLState 08001错误

我不明白的是,ODBC连接测试成功了,数据链接(UDL)成功了,但我的Access应用程序没有成功。 启动应用程序时,首先要通过passthroughquery运行一个存储过程,并从SQL数据库中的某个tbl获取数据。此SP带来连接错误,但不是Access的运行时错误(我甚至删除了错误处理程序!)

那么,如何在Access应用程序中找到原因或任何错误(如果有)

我很无助,因为我知道要测试或做什么,我已经试过让应用程序运行。因为我甚至不能安装32位的SQL驱动程序11,所以它不应该是与驱动程序相关的错误

有人知道一个测试应用程序吗?在这个应用程序中,我不仅可以连接,还可以从SQL数据库中检索数据,或者使用任何其他技巧来检查对数据库的访问?
谢谢你的帮助

Access通常作为32位应用程序安装。因此,在64位计算机上,它将使用32位子系统。在Windows 7上,ODBC数据源管理员实用程序的所有默认快捷方式都将导致该实用程序的64位版本。无论您在那里看到或配置什么,都是完全不相关的,因为您的32位访问不会看到它

解决方案: 您需要明确地打开32位版本的ODBC管理实用程序,并在其中配置数据源。
为了确保获得正确的版本,请使用Windows资源管理器并打开此文件:
C:\Windows\syswow64\odbcad32.exe

同时,我发现,当尝试使用类似“ODBC;DSN=MyDSN;…”的连接时,连接失败,但当我减少连接DNS时,通过与“ODBC;驱动程序=SQL Server本机客户端11;服务器=myServer;。。。。“

也许这正是你所说的。当我只使用DSN时,它采用了错误的位版本

因此,我将尝试以下操作:删除我拥有的DSN,打开odbcad32.exe并再次创建相同的DSN

如果我理解您的意思是正确的,那么Win 7将提供正确的驱动程序并将其存储在DSN中。通过访问调用此DSN将获得正确的设置

进一步的问题是,我的SSQL服务器实例不在端口1434,SQL Server本机客户端11驱动程序没有更多的ClientConfiguation来设置静态端口。因此,我为“MyServer\Myinstance,15999”找到了一个字符串解决方案

我希望此端口设置将在DSN中被接受,否则我真的必须更改为DSN,因为开发和生产的服务器不同,这会更加复杂。
谢谢你的回复。

我同时发现,当尝试使用类似“ODBC;DSN=MyDSN;。。。。。但是,当我通过“ODBC”连接DNS时,它是有效的;驱动程序=SQL Server本机客户端11;服务器=myServer;。。。。".