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

使用Tedious与MSI连接Azure函数应用和SQL Server出现身份验证错误如何解决

问题排查方案

1. 代码层面错误修正

你代码里的首要问题是连接配置的键名大小写错误,Tedious的连接配置中身份验证字段为小写authentication,你写的大写Authentication会被Tedious忽略,导致默认走SQL账号密码认证,因此抛出空用户名登录失败的错误。
修正后的配置示例如下:

const config = {
    server: 'XXXXXX.public.XXXXXX.database.windows.net',
    // 改为小写的authentication
    authentication: {
        type: 'azure-active-directory-msi-app-service',
        // 如果使用用户分配的MSI,需要额外添加以下配置
        // options: {
        //     clientId: "<用户分配MSI的客户端ID>"
        // }
    },
    options: {
        database: 'YYYYY',
        encrypt: true,
        port: 3342,
        connectTimeout: 120000
    }
}

另外建议升级Tedious到最新稳定版,旧版本对AAD MSI认证的支持存在已知兼容问题。

2. Azure SQL侧配置检查

  • 确认已使用AAD管理员账号登录SQL数据库,为函数MSI创建了对应账号并分配权限:
-- 创建外部用户,名称和函数应用的MSI显示名称完全一致
CREATE USER [<函数应用名称>] FROM EXTERNAL PROVIDER;
-- 分配所需权限,示例为读权限,按需调整
ALTER ROLE db_datareader ADD MEMBER [<函数应用名称>];
ALTER ROLE db_datawriter ADD MEMBER [<函数应用名称>]; -- 如需写权限再加
  • 确认SQL服务器已配置AAD管理员,可在Azure门户SQL服务器的「Azure Active Directory」菜单中查看配置状态。
  • 确认SQL服务器防火墙允许Azure服务访问,或已将函数应用的所有出站IP添加到SQL防火墙白名单。

3. 函数应用侧配置检查

  • 确认函数应用的「标识」菜单中,你使用的托管标识(系统分配/用户分配)已处于启用状态。
  • 如果使用用户分配的MSI,需要确保代码中已配置对应的客户端ID参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 06:48:02