如何连接Azure容器应用中.NET Aspire部署的SQL Server实例?
解决Azure容器应用中.NET Aspire创建的SQL Server实例SSMS连接问题(Error:258)
核心问题诊断
你遇到的Error:258本质是协议不匹配:SQL Server依赖TCP协议通信,但当前配置的是HTTP类型入口,Azure容器应用的HTTP入口仅处理HTTP/HTTPS流量,无法转发TCP请求到1433端口,导致外部无法建立连接。
连接步骤
1. 切换容器应用入口为TCP类型
- 登录Azure门户,找到目标容器应用,进入「入口」配置页面
- 删除原有的HTTP入口(或新增TCP类型入口),设置:
- 入口类型:TCP
- 目标端口:1433
- 流量来源:任意位置
- 保存配置后,记录Azure自动分配的TCP端点(格式为
[容器应用域名]:[动态端口],例如sql.randomazurename.westeurope.azurecontainerapps.io:54321)
2. 在SSMS中配置连接参数
- 打开SSMS,在「服务器名称」栏填入上述完整TCP端点(必须包含动态端口)
- 身份验证选择「SQL Server身份验证」,输入:
- 登录名:
sa - 密码:你在Aspire配置中设置的密码(对应连接字符串里的
XXX)
- 登录名:
- 点击「选项」,勾选「信任服务器证书」(对应连接字符串的
TrustServerCertificate=true) - 可选:在「连接到数据库」下拉框选择
DATABASENAME
3. 验证网络连通性
- 确认本地防火墙/安全组未阻止出站连接到Azure分配的TCP端口
- 如果容器应用启用了VNet集成,需确保本地网络能访问该VNet(可通过VPN或ExpressRoute实现)
关键注意事项
- Aspire提供的
Server=sql,1433是服务网格内的内部域名,仅在Aspire应用集群内有效,外部无法直接使用 - Azure容器应用的TCP入口不会使用1433端口,必须使用系统分配的动态端口
- 可通过容器应用的「日志」页面确认SQL Server是否已完全启动(日志中出现
SQL Server is now ready for client connections则说明启动完成)
内容的提问来源于stack exchange,提问作者SDG6
相关产品推荐
相关产品推荐

