Azure App Service连接VM内SQL Server遇网络错误求助
解决Azure App Service连接VM内SQL Server的问题
首先得揪出核心问题:你的VM没有配置公网IP和DNS名称,而App Service默认处于公共网络环境,根本没法解析db-svr这个本地计算机名——这就是你遇到「找不到服务器」错误的关键原因。再结合SQL Server远程连接的配置细节,咱们一步步来搞定:
步骤1:打通App Service与VM的网络通路
因为VM目前没有公网入口,App Service(除非做了VNet集成)根本触达不到它,这里有两种安全可行的方案:
- 方案A:给VM分配公网IP和DNS名称
- 登录Azure门户,找到你的VM,左侧菜单进入「设置」→「网络」
- 点击「公网IP地址」,分配一个新的公网IP,同时设置DNS名称(比如
db-svr-eastus.azure.com) - 之后连接字符串里的
Server要改成这个DNS名称+SQL端口(默认1433),格式是db-svr-eastus.azure.com,1433
- 方案B:配置App Service与VM所在VNet集成(更安全)
- 打开你的App Service,左侧菜单选「网络」→「VNet集成」
- 选择VM所在的虚拟网络完成集成,确保二者处于同一个VNet或对等VNet中
- 集成完成后,你就可以用VM的私有IP或者内部计算机名
db-svr来连接了
步骤2:验证SQL Server的远程连接配置
就算网络通了,SQL Server本身的设置也可能拦着远程连接:
- 启用TCP/IP协议
- 登录VM,打开「SQL Server配置管理器」
- 展开「SQL Server网络配置」,找到你的实例,确保「TCP/IP」协议处于启用状态
- 双击TCP/IP,切换到「IP地址」标签,找到「IPAll」部分,确认TCP端口是1433(或你自定义的端口),且「Active」和「Enabled」都设为Yes
- 允许远程连接到实例
- 打开SSMS连接本地SQL实例,右键实例名选「属性」→「连接」
- 勾选「允许远程连接到此服务器」并保存
- 完善防火墙入站规则
你说已经配了入站规则,但要确认:规则针对的是SQL Server的端口(默认1433);如果用公网IP方案,最好把源地址限制为App Service的出站IP(可在App Service「属性」里查看到所有出站IP);如果用VNet集成,源地址设为VNet的地址范围即可
步骤3:修正连接字符串
根据你选的网络方案调整:
- 公网IP+DNS方案示例:
Server=你的VM DNS名称,1433;Initial Catalog=DBName;Persist Security Info=False;User ID=userid;Password=password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30; - VNet集成+私有IP方案示例:
Server=VM私有IP,1433;Initial Catalog=DBName;Persist Security Info=False;User ID=userid;Password=password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
要是你用的是SQL Server命名实例,还要加上实例名,比如Server=xxx\InstanceName,1433
额外排查小技巧
- 用Kudu测连通性:在App Service的「高级工具」里打开Kudu控制台,执行
tcping 你的VM地址 1433,看能不能通 - 检查SQL账户权限:确保
userid拥有远程连接的权限,且密码输入正确 - 加密适配:如果你的SQL Server没配置合法SSL证书,可临时把
TrustServerCertificate改成True(生产环境建议配置正规证书)
内容的提问来源于stack exchange,提问作者Mukil Deepthi
相关产品推荐
相关产品推荐

