Mac 10.14下使用Docker和Azure Data Studio部署SQL失败求助
问题:Docker部署SQL Server 2022后Azure Data Studio连接失败(错误代码35)
问题详情
- 操作流程:跟随YouTube教程操作,Docker运行正常,执行启动命令:
容器成功启动,但Azure Data Studio按教程配置连接信息后,报错错误代码35,无法连接SQL Server。docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Password@" -p 1433:1433 -d mcr.microsoft.com/mssql/server:2022-latest - 疑问与额外信息:
- 曾收到关闭防火墙的建议,但存在三点困惑:关闭防火墙无需先连接SQL;教程镜像理论上不需要此操作;不清楚具体操作方式。
- 初始Docker日志出现
error 17836,查知该错误与入侵检测系统相关,但无法理解;在家使用后该日志错误消失,但连接问题仍存在,附Docker实例日志截图。
排查与解决步骤
1. 验证容器运行状态与端口映射
- 执行
docker ps,确认目标容器的STATUS为Up状态,且PORTS列显示0.0.0.0:1433->1433/tcp或:::1433->1433/tcp,确保端口映射生效。 - 若容器未正常运行,执行
docker logs <容器ID/容器名称>查看启动失败原因,重点检查SA_PASSWORD是否符合复杂度要求(需至少8位,包含大小写字母、数字、特殊字符)。
2. 测试本地端口连通性
- Windows系统:执行
telnet localhost 1433,若连接成功则端口正常;若失败,检查1433端口是否被本地其他程序(如本地安装的SQL Server)占用。 - Linux/macOS系统:执行
nc -zv localhost 1433,验证端口是否开放。
3. 核对Azure Data Studio连接参数
- 服务器名称输入
localhost,1433或127.0.0.1,1433(避免仅写localhost导致DNS解析异常)。 - 确认身份验证类型为
SQL登录,用户名为sa,密码为启动容器时设置的Password@,注意大小写与特殊字符的正确性。 - 若开启了代理,临时关闭Azure Data Studio的代理设置,排除代理拦截连接的可能。
4. 防火墙配置说明(无需提前连接SQL)
- 防火墙无需连接SQL即可修改,无需完全关闭,只需开放1433端口:
- Windows:打开「Windows Defender防火墙」→「高级设置」→「入站规则」,新建TCP规则允许1433端口的连接;也可临时关闭防火墙测试(测试后务必重新开启)。
- Linux:若使用ufw防火墙,执行
sudo ufw allow 1433/tcp;若使用firewalld,执行sudo firewall-cmd --add-port=1433/tcp --permanent && sudo firewall-cmd --reload。 - 教程镜像无需特殊防火墙操作是常规场景,但如果本地防火墙拦截了Docker的端口流量,就需要配置对应规则。
5. error 17836相关说明(当前已消失)
- 该错误是SQL Server接收到不符合TDS协议的数据包导致,通常由网络环境中的入侵检测系统(IDS)或安全软件拦截/修改数据包引发,在家环境中消失说明是之前网络环境的安全设备导致,当前无需关注。
6. 分析最新Docker日志
- 执行
docker logs <容器ID/容器名称>,重点查找:SQL Server is now ready for client connections:确认SQL Server已完全启动并等待连接。- 包含
error或failed的条目,定位运行中的异常。
内容的提问来源于stack exchange,提问作者bobsmith76
相关产品推荐
相关产品推荐

