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

无法通过sqlcmd连接远程SQL Server实例,求解决排查指引

排查SQL Server Express远程连接失败的思路

我之前也碰到过几乎一模一样的SQL Server Express远程连接问题,结合你已经做的配置,下面几个容易被忽略的点可以逐一排查:

  • 确认SQL Server Browser服务是否运行:SQL Server Express作为命名实例,默认依赖SQL Server Browser服务来对外暴露实例的端口信息,这个服务默认是禁用状态。你可以在Windows Server的「服务」里找到它,设置启动类型为「自动」并立即启动,之后再尝试连接。

  • 检查TCP/IP协议的详细配置:别只停留在启用TCP/IP,要打开SQL Server配置管理器,展开「SQL Server网络配置」→「SQLEXPRESS的协议」→右键「TCP/IP」→「属性」,切换到「IP地址」标签页:

    • 找到「IPAll」部分,清空「TCP动态端口」,把「TCP端口」设置为1433
    • 确保所有IP地址(比如IP1、IP2…)的「已启用」选项设为「是」
    • 做完这些后必须重启SQL Server服务,让配置生效。因为Express默认会分配动态端口,即使你开了1433,动态端口可能还在干扰连接。
  • 补全防火墙规则:你已经开了TCP 1433,但别忘了SQL Server Browser用的是UDP 1434端口,这个端口需要在Windows Server的防火墙里添加入站规则,允许UDP 1434的访问;同时本地Win7的防火墙出站规则也要允许UDP 1434,否则本地无法获取实例的端口信息。

  • 测试基础网络连通性:

    • 先用ping 服务器IP确认本地能通远程服务器
    • 再用PowerShell命令Test-NetConnection 服务器IP -Port 1433测试1433端口是否能连通,如果返回「TcpTestSucceeded : True」说明端口是通的,否则还是网络或防火墙问题
    • 也可以试试telnet 服务器IP 1433(需要先在Win7上启用Telnet客户端)
  • 直接用端口号连接测试:如果不想依赖SQL Server Browser,可以直接在连接命令里指定端口,绕开实例名称解析:

    sqlcmd -S 服务器IP,1433 -U username -P password
    

    如果这个命令能成功,说明之前的实例名称解析有问题,大概率是SQL Server Browser没开或者UDP 1434端口没放行。

  • 验证SQL认证账户的权限:确保你用的SQL账户有远程连接的权限:

    • 登录到SQL Server实例,右键对应的登录账户→「属性」→「状态」
    • 确认「允许连接到数据库引擎」是「启用」状态,同时该账户要有访问目标数据库的权限
  • 再次确认身份验证模式:虽然你说用的是SQL认证,但还是要检查服务器的身份验证模式是否正确:

    • 在SSMS里右键服务器→「属性」→「安全性」
    • 确认选中的是「SQL Server和Windows身份验证模式」,如果之前是Windows模式,修改后需要重启SQL Server服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:42:31