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

使用服务器名称通过SSMS连接Docker中SQL Server失败

Docker部署SQL Server 2019主机名连接失败解决方案

1. 核对Docker端口映射配置

Docker启动SQL Server时,必须把容器1433端口绑定到宿主机的公网/局域网IP端口,而不是仅localhost。

  • 执行docker ps查看容器PORTS列,确认是0.0.0.0:1433->1433/tcp或[::]:1433->1433/tcp。如果显示127.0.0.1:1433->1433/tcp,说明只允许本地访问,需要重新启动容器:
    docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=你的强密码" \
    -p 0.0.0.0:1433:1433 --name sqlserver2019 -d mcr.microsoft.com/mssql/server:2019-latest
    

2. 验证主机名DemoSQL2的解析

客户端无法通过主机名连接,首先要确认主机名能解析到宿主机IP:

  • 在客户端命令行执行ping DemoSQL2,如果无响应,说明DNS解析失败:
    • 局域网环境下,检查局域网DNS服务器是否添加了DemoSQL2的解析记录;
    • 临时解决:修改客户端hosts文件(Windows:C:\Windows\System32\drivers\etc\hosts;Linux/macOS:/etc/hosts),添加一行:宿主机IP DemoSQL2,保存后重试连接。

3. 开放宿主机防火墙1433端口

宿主机防火墙会拦截外部对1433端口的访问,必须手动允许:

  • Windows:打开「Windows Defender防火墙」→「高级设置」→「入站规则」,新建TCP 1433端口的允许规则;
  • Linux:执行sudo ufw allow 1433/tcp(ufw防火墙),或sudo iptables -A INPUT -p tcp --dport 1433 -j ACCEPT(iptables)。

4. 确认SQL Server允许远程连接

进入Docker容器检查并开启远程连接:

  1. 进入容器:docker exec -it sqlserver2019 bash
  2. 登录SQL Server:/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "你的强密码"
  3. 检查远程访问配置:
    sp_configure 'remote access';
    GO
    
    若config_value不为1,执行:
    sp_configure 'remote access', 1;
    GO
    RECONFIGURE;
    GO
    
  4. 启用TCP/IP协议:
    执行/opt/mssql/bin/mssql-conf set network.tcpenabled 1,然后重启容器:docker restart sqlserver2019

5. 检查连接格式

确保连接地址是DemoSQL2,1433(逗号分隔主机名和端口),不要用反斜杠DemoSQL2\1433——Docker部署的SQL Server默认是默认实例,不需要指定实例名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:17:41