如何使用SSMS连接Azure应用服务容器中的SQL Server
本地SSMS连接Azure容器内SQL Server的实操步骤
首先要明确你当前部署场景的核心规则:Azure应用服务(基于Docker Compose的多容器部署)不会自动把你compose文件里写的端口映射暴露到公网——你配置的"1450:1433"仅代表容器组内部,把sqldata容器的1433端口映射到同组其他容器可访问的1450端口,公网入口默认仅保留80、443端口用于承载Web类应用流量,非Web端口默认是不对外开放的。
第一步:适配Azure的端口暴露规则
- 如果你使用的是基础层及以上SKU的应用服务,进入应用服务的「网络」配置面板,找到「入站端口规则」配置项,手动添加入站规则:允许TCP协议的1450端口入站流量,绑定和你compose配置一致的公网端口
- 如果你用的是免费/共享层级的应用服务,是无法配置自定义入站非Web端口的,需要先把SKU升级到基础层(B1及以上)才能实现公网端口的对外暴露
- 不需要修改compose里的端口映射段,保持原有
"1450:1433"的配置即可,这个配置可以保证同组内的dockercrud应用可以正常连接SQL容器
第二步:SSMS端配置连接参数
- 服务器地址栏填写规则:
你的应用服务名称.azurewebsites.net,1450——注意端口号和域名之间用英文逗号分隔,这是SQL Server连接协议的标准语法,不要写成冒号分隔的格式 - 身份验证方式选择「SQL Server身份验证」
- 登录名填写
sa - 密码填写你compose环境变量里配置的
vV5r9tn0M4@
- 登录名填写
连接失败排查要点
- 连接超时的话,先检查本地网络是否屏蔽了1450端口的出站规则,以及应用服务的网络安全组有没有拦截对应端口的入站流量
- 不要尝试把SQL的对外映射端口改成1433,这个端口段在Azure应用服务的内部网络中有系统级占用,会出现连接冲突
- 安全提示:直接把SQL端口暴露到公网的方式存在极高的暴力破解风险,生产环境不建议使用。正式场景下建议将SQL容器配置为仅容器组内部可访问,通过主应用的接口完成数据交互,不要直接将SA账户暴露到公网环境。
内容的提问来源于stack exchange,提问作者yogihosting
相关产品推荐
相关产品推荐

