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

SSIS包使用Active Directory Service Principal报authentication键值无效

问题根因

你当前使用的System.Data.SqlClient库不支持连接字符串中Authentication参数的Active Directory Service Principal枚举值,该参数属于Microsoft.Data.SqlClient、高版本ODBC/OLEDB驱动的支持特性,在.NET Framework 4.7配套的原生System.Data.SqlClient中无法被识别,因此抛出参数无效报错。

可行解决方案

方案一:替换驱动库(改动最小)

  • 在脚本任务的项目中通过NuGet安装兼容.NET Framework 4.7的Microsoft.Data.SqlClient稳定版包(推荐2.1及以上版本)
  • 将脚本中所有引用System.Data.SqlClient的命名空间替换为Microsoft.Data.SqlClient
  • 调整连接字符串,去掉Authentication参数值两端的引号即可,调整后示例:
Server=tcp:servername.database.windows.net,1433;
Initial Catalog=DBName;Persist Security Info=False;
User ID=clientid;Password=secrets;
Authentication=Active Directory Service Principal;
MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;

原有数据操作逻辑无需修改,直接运行即可。

方案二:保留System.Data.SqlClient,手动获取访问令牌

如果不想替换现有依赖库,可以改用手动获取Azure AD令牌的方式完成身份验证:

  • 删除连接字符串中的Authentication、User ID、Password三个参数,调整为基础连接字符串:
Server=tcp:servername.database.windows.net,1433;Initial Catalog=DBName;Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;
  • 在脚本任务中安装Microsoft.Identity.Client NuGet包,编写代码获取访问令牌后传入数据库连接,示例逻辑:
using Microsoft.Identity.Client;
using System.Data.SqlClient;

// 构造机密客户端
var confidentialClient = ConfidentialClientApplicationBuilder
    .Create("你的服务主体客户端ID")
    .WithClientSecret("你的服务主体密钥")
    .WithTenantId("你的Azure AD租户ID")
    .Build();

// 请求Azure SQL访问令牌
var tokenResult = await confidentialClient
    .AcquireTokenForClient(new string[] { "https://database.windows.net/.default" })
    .ExecuteAsync();

// 打开连接时传入令牌
using (var sqlConn = new SqlConnection(调整后的基础连接字符串))
{
    sqlConn.AccessToken = tokenResult.AccessToken;
    sqlConn.Open();
    // 原有数据操作逻辑保持不变
}
注意事项
  • 两种方案都需要提前确认所用服务主体已被授予目标Azure SQL数据库的对应操作权限
  • 部署SSIS包到生产环境运行时,需要确保运行节点已安装对应依赖,或者将依赖包设置为随脚本任务程序集一同发布。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:48:03