Windows Forms通过局域网IP连接SQL Server 2022失败求助
局域网下Windows Forms访问SQL Server 2022连接问题
本地使用以下连接字符串可正常访问SQL Server:
string sqlConnectionString = "Server=localhost\\SQLEXPRESS;Database=DMStorage;Trusted_Connection=True;"
但更换为局域网IP的连接字符串后均无法连接,尝试过的连接字符串如下:
//string sqlConnectionString = "Data Source = 192.9.210.62,1433; Initial Catalog = DM_Storage;Trusted_Connection=True;"; //string sqlConnectionString = "Data Source = 192.9.210.62,1433; Network Library = DBMSSOCN;Initial Catalog = DM_Storage; User ID = FKJ; Password=123456"; //string sqlConnectionString = "Data Source = 192.9.210.62,1433;Initial Catalog = DM_Storage; User ID = Faizan Khan; Password=123456";
已完成的设置:
- 允许远程连接到此服务器
- 启用SQL Server和Windows身份验证模式
- 已启用TCP协议,设置TCP端口为1443,TCP动态端口为61354,询问该配置是否正确?
- 已配置防火墙入站规则
问题分析与解决步骤
1. TCP端口配置问题(核心问题)
当前TCP配置不正确:同时设置固定端口1443和动态端口61354会导致SQL Server随机选用端口,而你连接字符串中使用的是1433,端口不匹配直接导致连接失败。
修正配置:
- 打开SQL Server配置管理器,展开「SQL Server网络配置」→ 选中你的实例(如SQLEXPRESS)的协议
- 右键点击「TCP/IP」→ 属性 → 切换到「IP地址」选项卡
- 拉到最底部的「IPAll」区域:
- 清空「TCP动态端口」(设为空值)
- 将「TCP端口」设置为1433(或保持1443,但后续连接字符串要对应)
- 重启SQL Server服务(在「SQL Server服务」中找到对应实例,右键重启)
2. 连接字符串修正
注意数据库名称要和本地一致(本地为DMStorage,之前尝试的DM_Storage名称不匹配),同时端口要和配置的一致:
Windows身份验证
string sqlConnectionString = "Data Source=192.9.210.62,1433;Initial Catalog=DMStorage;Trusted_Connection=True;";
若用1443端口,改为192.9.210.62,1443
SQL Server身份验证
确保登录账号(如FKJ)拥有DMStorage数据库的访问权限,账号含空格时需用引号包裹:
// 无空格账号 string sqlConnectionString = "Data Source=192.9.210.62,1433;Initial Catalog=DMStorage;User ID=FKJ;Password=123456;"; // 含空格账号 string sqlConnectionString = "Data Source=192.9.210.62,1433;Initial Catalog=DMStorage;User ID=\"Faizan Khan\";Password=123456;";
3. 防火墙规则验证
确认防火墙入站规则允许你设置的端口(1433或1443)的TCP流量通过,规则需覆盖局域网客户端IP范围,或直接允许SQL Server服务的程序路径(更安全)。
4. 额外排查点
- 在客户端用
telnet 192.9.210.62 1433(对应端口)测试连通性,不通则优先检查防火墙和端口配置 - 确认实例名称:若为SQLEXPRESS实例,连接字符串可写成
Data Source=192.9.210.62\SQLEXPRESS,1433;(默认实例无需加\SQLEXPRESS) - 检查SQL Server服务是否正常运行,且监听的是你设置的固定端口
内容的提问来源于stack exchange,提问作者Muhammad Faizan Khan
相关产品推荐
相关产品推荐

