You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用VB.Net连接端口1600的SQL Server 2016失败,请求排查

排查VB.Net连接SQL Server 2016(端口1600)的连接问题

咱们一步步来拆解这个连接失败的问题,我之前处理过不少类似的非默认端口连接故障,给你列几个核心检查点:

1. 优化连接字符串的协议明确性

你的连接字符串格式本身没问题,但对于非默认端口的远程连接,建议强制指定TCP/IP协议,避免系统自动选择其他协议(比如命名管道)导致隐性问题。修改后的连接字符串如下:

Public glob_connection_string As String = "Server=learningserver.com,1600;Database=learning_db;User ID=read_only;Password=read_only;Network Library=DBMSSOCN;"

Network Library=DBMSSOCN; 会强制使用TCP/IP协议,这在非默认端口场景下经常能解决协议选择的模糊问题。

2. 确认SQL Server的TCP/IP配置完全生效

你提到已启用TCP/IP,但要确保端口配置正确且服务已重启:

  • 打开SQL Server配置管理器,展开「SQL Server网络配置」→ 找到你的SQL Server实例对应的「TCP/IP」,确认状态是「已启用」。
  • 双击TCP/IP进入属性,切换到「IP地址」标签页:
    • 拉到最底部的「IPAll」部分,确保「TCP动态端口」为空,「TCP端口」严格设置为1600(不要留空或填其他值)。
    • 检查上方的具体IP条目(比如IP1、IP2),如果对应的「已启用」是「是」,也要确保它们的「TCP端口」和IPAll保持一致,或者直接禁用不需要的IP条目。
  • 配置修改后,必须重启SQL Server服务,否则新配置不会生效。

3. 排查网络防火墙的端口拦截

这是非默认端口连接失败最常见的原因:

  • 如果SQL Server在远程服务器上,联系管理员确认服务器防火墙已开放1600端口的TCP入站规则。
  • 如果是本地服务器,检查Windows防火墙是否允许SQL Server的1600端口通信。
  • 可以用命令行快速测试连通性:打开CMD执行 telnet learningserver.com 1600,如果提示“无法打开连接”,说明网络层面被拦截,先解决防火墙问题。

4. 验证账号权限与可用性

  • 先用SQL Server Management Studio(SSMS)尝试用read_only账号连接目标服务器(指定1600端口),如果SSMS都连不上,说明是账号或服务器本身的问题,和VB.Net代码无关。
  • 确认read_only账号拥有learning_db数据库的访问权限,且在服务器层面允许远程连接(在SSMS中右键实例→属性→连接→勾选「允许远程连接到此服务器」)。

5. 检查VS2010的驱动兼容性

VS2010默认使用.NET Framework 4.0,可能需要额外驱动支持才能稳定连接SQL Server 2016:

  • 安装SQL Server 2016 Native Client,它能提供旧版本.NET与新版本SQL Server的兼容连接支持。

6. 排除DNS解析问题

如果learningserver.com是域名,先尝试用服务器的直接IP地址替换域名测试连接字符串,比如:

Public glob_connection_string As String = "Server=192.168.x.x,1600;Database=learning_db;User ID=read_only;Password=read_only;Network Library=DBMSSOCN;"

如果用IP能连上,说明是DNS解析的问题,需要排查域名解析配置。

如果以上步骤都试过还是不行,建议把VB.Net抛出的具体错误信息贴出来(比如“超时过期”“登录失败”还是“找不到服务器”),这样能更精准定位问题。

内容的提问来源于stack exchange,提问作者Prabhakar Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:59:20