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

C#编写Azure Functions定时器触发连接Azure SQL数据库报错如何解决

故障原因与修复方案

该异常是SQL连接建立阶段触发的连接池报错,可按照以下步骤逐一排查修复:

1 修正代码中的异步调用错误

你当前在异步方法内使用同步的SqlConnection.Open()方法,线程阻塞会触发连接池异常,同时SELECT语句误用了ExecuteNonQueryAsync方法,修改核心逻辑如下:

using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using System.Data.SqlClient;
using System.Threading.Tasks;

namespace azuretosharepoint
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task RunAsync([TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, ILogger log)
        {
            try
            {
                var connectionString = Environment.GetEnvironmentVariable("sqldb-connection");
                using (SqlConnection conn = new SqlConnection(connectionString))
                {
                    // 改用异步打开连接
                    await conn.OpenAsync();
                    var queryText = "SELECT COUNT(*) FROM PERSONNE;";
                    using (SqlCommand cmd = new SqlCommand(queryText, conn))
                    {
                        // SELECT计数用ExecuteScalarAsync,查询结果集用ExecuteReaderAsync
                        var rowCount = (int)await cmd.ExecuteScalarAsync();
                        log.LogInformation($"查询到{rowCount}条PERSONNE记录");
                    }
                }
            }
            catch(Exception e)
            {
                // 改用ILogger输出异常,可在Azure Functions控制台/Application Insights查看完整报错
                log.LogError(e, "连接Azure SQL失败");
            }
        }
    }
}

2 检查Azure SQL访问权限

  • 登录Azure门户,进入对应SQL Server的「网络」设置页,开启允许Azure服务和资源访问此服务器选项
  • 如果Functions用的是固定出站IP,可将Functions的所有出站IP添加到SQL Server的防火墙白名单

3 验证连接字符串配置

  • 检查Azure Functions应用配置中的sqldb-connection参数值,确认格式正确,包含完整的服务器地址、数据库名、身份验证信息
  • 本地调试时需在local.settings.json的Values节点下添加sqldb-connection配置,本地才可以读取到连接字符串

修改完成后重新发布运行,通过Functions的日志面板即可看到具体报错信息,可根据明确的错误提示进一步调整配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 02:15:01