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

无法配置Azure Function App建立SQL连接的技术求助

解决Azure Portal中Timer Trigger函数编译错误(找不到Microsoft.Data/Azure命名空间)

问题原因

在Azure Portal中编辑的CSX(C#脚本)函数,依赖包需要通过显式指令加载,本地开发工具安装的包不会自动同步到Azure函数宿主环境,导致编译时无法找到相关命名空间及类型。

门户内解决步骤

1. 添加NuGet包引用

在run.csx脚本最顶部添加以下包引用指令(版本可选择与你的.NET运行时兼容的稳定版):

#r "nuget: Microsoft.Data.SqlClient, 5.1.5"
#r "nuget: Azure.Identity, 1.12.0"
  • Microsoft.Data.SqlClient:提供SQL Server连接所需的SqlConnection等核心类型
  • Azure.Identity:支持通过系统分配托管标识获取SQL访问令牌,适配你的身份认证场景

2. 修正命名空间引用

替换原有的using指令为正确的命名空间:

using Microsoft.Data.SqlClient;
using Azure.Identity;
using System;
using Microsoft.Extensions.Logging;

3. 替换为托管标识兼容的SQL连接代码

由于使用系统分配托管身份认证SQL,无需密码,改用令牌认证方式,示例代码如下:

public static void Run(TimerInfo myTimer, ILogger log)
{
    log.LogInformation("Timer trigger function executed at: {time}", DateTime.Now);

    // 替换为你的SQL服务器和数据库名称
    string serverName = "your-sql-server.database.windows.net";
    string databaseName = "your-target-db";

    // 获取托管标识的SQL访问令牌
    var credential = new DefaultAzureCredential();
    var token = credential.GetToken(new Azure.Core.TokenRequestContext(new[] { "https://database.windows.net/.default" }));

    // 构建无密码连接字符串
    string connString = $"Server=tcp:{serverName},1433;Database={databaseName};Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";

    using (SqlConnection conn = new SqlConnection(connString))
    {
        conn.AccessToken = token.Token;
        conn.Open();
        log.LogInformation("成功连接到SQL Server");
        // 在此添加iMIS业务对象同步逻辑
    }
}

4. 保存并测试

在Azure Portal的函数代码编辑页面点击「保存」,触发测试验证编译错误是否消除、SQL连接是否成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 03:02:23