可以从一个客户端访问远程连接的SQL数据库,但不能从另一个客户端进行访问
本文关键字:客户端 访问 数据库 SQL 但不能 另一个 远程连接 一个 | 更新日期: 2023-09-27 18:26:46
我已经构建了一个winforms应用程序,该应用程序安装在客户端计算机上,该客户端计算机上的SQL Server数据库托管在客户端通过远程连接访问的服务器上。
该应用程序按计划在服务器和一个客户端上运行,但当我试图从第二个客户端访问相同的数据时,我会出现"登录前握手"错误。
在研究过程中,我发现了许多解决方案,有些说我需要启用IPV4和IPV6,我做到了,另一些说我需要启动远程连接,这不是问题,因为其他客户端已经访问了它
有人能告诉我问题出在哪里吗?
工作的客户端运行:64位处理器,Windows 8操作系统。不运行的客户端:32位处理器,Windows Vista。
Clents还通过本地网络上的ClickOnce访问该应用程序。应用程序目标操作系统当前设置为x64。当我到达办公室时,我会切换到任何CPU和x86,并报告是否有任何变化。
检查网络
你的x64盒子可以看到服务器,但你的32位盒子看不到,这很奇怪。两个盒子是连接到同一个交换机,还是通过不同的网络路径到达服务器?正如Eric所说,可能有防火墙阻塞了32位机器和SQL框之间的SQL Server端口。
此外,从出现故障的机器中,检查它认为SQL Box所在的网络地址:
C:'> nslookup TestSQLServer
Server: dns1.internal.foo.com
Address: 10.1.10.2
Non-authoritative answer:
Name: TestSQLServer
Address: 10.1.10.141
如果DNS为SQL框返回IPv6地址,请确保故障客户端已安装并启用IPv6。
检查SQL Server
如本线程中所讨论的,请尝试将SQL Server设置为侦听特定的网络接口,并尝试连接到该接口的IP地址。注意:如果这个IP地址是通过DHCP动态分配的,不要硬编码你的客户端代码来与它对话。
还要检查服务器正在侦听哪个端口——如果它从默认端口更改,则必须在客户端的连接字符串/代码中指定端口号。
检查与SQL Server的连接
我建议彻底测试故障客户端和服务器之间的网络。
测试失败的客户端是否可以在网络上看到SQL Server
- 使用"ODBC数据源"控制面板小程序从出现故障的客户端创建到SQL Server的ODBC连接。使用"测试数据源"按钮
测试是否可以使用SQLCMD从出现故障的客户端连接到SQL Server。请确保使用与客户端登录SQL Server时使用的凭据相同的凭据进行连接。例如:
sqlcmd -S TestSQLServer'TestInstance1 -D TestDB -U TestUser -P TestPassword -Q select * from TestData