You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure部署的ASP.NET应用连接本地数据库可行吗?问题咨询

如何将本地SQL Server数据库连接到Azure Web应用?

我尝试将本地SQL Server数据库连接到部署在Azure上的Web应用,已修改Entity Framework连接字符串,将数据源替换为myip.opendns.com提供的公网IP并指定端口1433,具体配置如下:

<add name="DB"
connectionString="metadata=res://*/Models.CNL.csdl|res://*/Models.CNL.ssdl|res://*/Models.CNL.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source={myip},1433;initial catalog=cnl;persist security info=True;user id=sa;password=1234;multipleactiveresultsets=True;application name=EntityFramework;Connect Timeout=60;&quot;"
providerName="System.Data.EntityClient" />

但遇到以下问题:

  • 指定端口1433时,报错等待操作超时
  • 移除端口后,报错访问被拒绝
  • 使用本地实例名server\SQLEXPRESS,提示无法找到实例
  • 使用本地内网IP,同样出现上述两种错误

已完成的排查操作:

  • 配置了Windows防火墙1433端口的入站规则
  • 在SQL Server中开启了允许远程连接选项

排查与解决步骤

1. 验证公网端口的可达性

从Azure环境测试端口连通性:

  • 打开Azure门户,进入Web应用的高级工具(Kudu),在控制台执行 telnet {你的公网IP} 1433(或替换为自定义端口)。如果连接失败,说明:
    • 家用ISP可能屏蔽了1433这类常用端口,建议更换为非标准端口(如14330)
    • 路由器的端口转发未正确配置

2. 修正SQL Server的端口监听设置

  • 打开SQL Server配置管理器,展开SQL Server网络配置 -> 选中目标实例的TCP/IP协议,确保状态为已启用
  • 双击TCP/IP协议,切换到IP地址标签页,找到IPAll部分:
    • 清空TCP动态端口,设置TCP端口为你要使用的端口(如14330)
    • 重启SQL Server服务使配置生效

3. 配置路由器端口转发

  • 登录路由器管理后台,找到端口转发/虚拟服务器配置项:
    • 设置外部端口为你选择的公网端口(如14330),内部端口为SQL Server监听的端口(如14330)
    • 内部IP填写本地数据库服务器的内网IP(如192.168.1.100)
    • 协议选择TCP

4. 调整连接字符串

  • 确保provider connection string中的data source格式为 {公网IP},{端口},例如:203.0.113.10,14330
  • 不要使用本地实例名(如server\SQLEXPRESS),Azure无法解析本地网络的NetBIOS名称
  • 确认sa账号权限:在SQL Server中检查sa是否允许远程登录,且对cnl数据库拥有读写权限

5. 检查多层防火墙

  • 除Windows防火墙外,确认路由器防火墙未拦截目标端口的入站流量
  • 检查杀毒软件自带的防火墙规则,确保未阻止SQL Server的远程连接

内容的提问来源于stack exchange,提问作者KaskarSamael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 05:02:42