使用服务器名称通过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,保存后重试连接。
- 局域网环境下,检查局域网DNS服务器是否添加了
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容器检查并开启远程连接:
- 进入容器:
docker exec -it sqlserver2019 bash - 登录SQL Server:
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "你的强密码" - 检查远程访问配置:
若sp_configure 'remote access'; GOconfig_value不为1,执行:sp_configure 'remote access', 1; GO RECONFIGURE; GO - 启用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
相关产品推荐
相关产品推荐

