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

如何在Azure Function中使用Microsoft.Data.SqlClient实现AD托管身份SQL连接?

在Azure Function中使用AD托管身份连接SQL Server的解决方案

1. 匹配运行时与SqlClient版本

Azure Function的.NET运行时版本必须和Microsoft.Data.SqlClient版本兼容:

  • .NET 6/7:推荐用5.1.1及以上版本
  • .NET 3.1:使用4.8.5及以上版本
    版本不匹配时,仅添加using语句会直接导致运行时加载失败。

2. 正确引入Microsoft.Data.SqlClient包

仅在代码顶部加using语句没用,必须确保包已被正确安装:

  • 进入Function的高级工具(Kudu),打开Site extensions -> NuGet Package Manager,搜索Microsoft.Data.SqlClient选择对应版本安装
  • 或者直接编辑Function的.csproj项目文件,添加依赖:
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.1.1" />

保存后Function会自动重新加载依赖。

3. 编写正确的连接代码

添加using语句后,结合配置的连接字符串编写逻辑:

using Microsoft.Data.SqlClient;
using System.Data;

public static async Task Run(...)
{
    string connectionString = Environment.GetEnvironmentVariable("SqlConnectionString");
    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        await conn.OpenAsync();
        // 示例:执行查询操作
        string sql = "SELECT TOP 10 * FROM MyTable";
        using (SqlCommand cmd = new SqlCommand(sql, conn))
        {
            using (SqlDataReader reader = await cmd.ExecuteReaderAsync())
            {
                while (await reader.ReadAsync())
                {
                    // 处理返回的数据
                }
            }
        }
    }
}

连接字符串需配置在Function的配置 -> 应用程序设置中,键值对形式存储:
SqlConnectionString: Server=db.database.windows.net; Authentication=Active Directory Managed Identity;Encrypt=True;Database=myDb

4. 配置托管身份权限

确保Azure Function的托管身份拥有SQL Server的访问权限:

  • 进入Azure SQL Server的Azure Active Directory -> 管理员,将托管身份设置为SQL管理员(或仅授予数据库级权限)
  • 进入目标数据库,执行SQL添加权限:
CREATE USER [Function托管身份名称] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [Function托管身份名称];
ALTER ROLE db_datawriter ADD MEMBER [Function托管身份名称];

可根据实际需求调整角色(如db_owner或自定义角色)。

排查要点

  • 若仍报错,查看Kudu的LogFiles目录下的ApplicationInsights日志,定位具体依赖冲突信息
  • 确认安装NuGet包后Function已完成重启,等待依赖加载完成

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:01:12