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

Azure Function v4(.NET6)如何通过连接字符串经GlobalProtect连SQL Server?

问题描述

使用.NET 6、Azure Function v4及SqlClient组件开发Azure Function应用,配置的数据库连接字符串如下:

Server=tcp:name.database.windows.net,1433;Initial Catalog=dbName;Persist Security Info=False;User ID=username;Password=password;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False;Connection Timeout=120;

平时通过GlobalProtect(提供门户地址、用户名密码)访问该数据库,但开发Function时出现如下错误:

System.Private.CoreLib: Exception while executing function: MyAzurefunction. Core .Net SqlClient Data Provider: Cannot open server 'serverName' requested by the login. Client with IP address 'MyIpAddress' is not allowed to access the server. To enable access, use the Windows Azure Management Portal or run sp_set_firewall_rule on the master database to create a firewall rule for this IP address or address range. It may take up to five minutes for this change to take effect.

已知错误原因是IP未被允许访问服务器,但希望了解如何通过连接字符串实现数据库连接?

解决方法

首先明确:连接字符串本身无法绕过Azure SQL的防火墙限制,必须先解决IP授权问题,才能让Function正常连接数据库。以下是针对不同场景的具体处理方式:

开发阶段(本地运行Function)

  • 如果你通过GlobalProtect访问数据库,本地实际对外的IP是GlobalProtect分配的公网IP(而非本地局域网IP)。需要将这个公网IP添加到Azure SQL服务器的防火墙规则中:
    1. 登录Azure门户,找到目标SQL服务器
    2. 进入「防火墙和虚拟网络」设置页面
    3. 添加新防火墙规则,填入GlobalProtect分配的公网IP(可通过查询公网IP工具获取),设置规则名称和有效期
    4. 保存后等待5分钟左右,规则生效后即可正常连接
  • 临时方案:在「防火墙和虚拟网络」中勾选「允许Azure服务和资源访问此服务器」,但此设置会扩大访问范围,开发完成后建议关闭

生产阶段(Function部署到Azure)

  • 添加Function出站IP到防火墙:
    1. 在Azure门户找到你的Function应用,进入「属性」页面,复制所有「出站IP地址」
    2. 回到SQL服务器防火墙设置,为每个出站IP添加单独规则,或整理成地址范围批量添加
  • 更安全的方案:将Function和SQL服务器加入同一虚拟网络,通过私有IP访问,同时关闭SQL服务器的公网访问权限,避免暴露公网入口

连接字符串配置补充

确保连接字符串参数正确:

  • 确认Server字段的服务器名称无误(应为name.database.windows.net)
  • Initial Catalog需匹配目标数据库名称,避免拼写错误
  • 生产环境请勿硬编码连接字符串,建议存储在Function应用的「配置」-「应用程序设置」中,防止敏感信息泄露

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:05:39