如何将Web应用连接至Azure虚拟机上的SQL Server(IaaS)
没问题,我帮你理清楚从Web应用连接Azure VM上部署的SQL Server(IaaS)的关键步骤——其实和PaaS场景的核心区别主要在VM的网络配置和SQL Server本身的设置,一步步来就行:
一、先搞定Azure VM的网络配置
这是最容易踩坑的环节,毕竟IaaS的VM是有独立网络边界的:
- 优先推荐让你的Web应用和Azure VM处于同一虚拟网络(VNet),或者通过VPN/Express Route打通两者的网络。这种方式用私有IP连接,安全又稳定,不需要开放公网端口。
- 如果实在需要公网连接(绝对不推荐生产环境用),得在VM的网络安全组(NSG)里添加入站规则:允许1433端口(SQL Server默认端口)的流量,来源设置为你的Web应用的出站IP地址,或者整个Web应用服务的IP范围(避免IP变动导致连接失败)。另外还要检查VM自身的Windows防火墙,同样要开放1433端口的入站权限。
- 别忘了检查子网级别的NSG规则,有时候子网的规则会覆盖VM的规则,导致流量被拦截。
二、配置SQL Server的远程访问权限
搞定网络后,得确保SQL Server本身允许远程连接:
- 打开SQL Server配置管理器,找到「SQL Server网络配置」→ 对应实例的「TCP/IP」协议,右键启用它,然后重启SQL Server服务(这步一定要做,不然设置不生效)。
- 切换到SQL Server的身份验证模式:在SSMS里右键服务器实例→ 属性→ 安全性,选择混合模式(SQL Server和Windows身份验证),重启服务后创建一个带远程访问权限的SQL账号(不要用Windows账号,除非Web应用和VM在同一个域里,不然很难配置)。
- 如果改了SQL Server的默认端口(不是1433),要在TCP/IP协议的属性里确认端口号,同时NSG和Windows防火墙也要同步开放这个端口。
三、构建正确的连接字符串
格式和PaaS的类似,但服务器地址要换成VM的IP:
- 同VNet内连接:用VM的私有IP,比如:
Server=10.0.0.5,1433;Database=YourDBName;User Id=YourSQLAccount;Password=YourPassword;Encrypt=True;TrustServerCertificate=True; - 公网连接:用VM的公共IP,比如:
Server=203.0.113.10,1433;Database=YourDBName;User Id=YourSQLAccount;Password=YourPassword;Encrypt=True;TrustServerCertificate=True;
注意:生产环境不要用
TrustServerCertificate=True,建议配置正规的SSL证书,避免中间人攻击。
四、测试连接排障
- 先在本地用SSMS连接VM上的SQL Server,确认能正常访问,排除SQL Server本身的配置问题。
- 然后在Web应用里测试:比如在代码里用
SqlConnection初始化连接,或者在Azure App Service的配置里添加连接字符串,再通过代码读取测试。如果连接失败,先检查网络通不通(比如用telnet测试端口),再检查SQL账号的权限,最后看连接字符串有没有写错。
内容的提问来源于stack exchange,提问作者nangel
相关产品推荐
相关产品推荐

