【问题标题】:Active Directory Service Principal is giving Invalid value for key 'authentication'Active Directory 服务主体为密钥“身份验证”提供无效值
【发布时间】:2021-12-07 02:20:21
【问题描述】:

我正在尝试执行一个 SSIS 包,其中源是 SQL Server,目标是 Azure SQL,身份验证为“Active Directory 服务主体”。 ODBC驱动是17.8,OLEDB驱动是18.5。

执行 SSIS 包时,脚本任务失败并出现此错误

密钥“身份验证”的值无效

使用以下连接字符串:

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 库并针对 .NET Framework v4.7

【问题讨论】:

  • 您好@user3934763,请问您使用的microsoft.data.sqlclient 版本是什么?由于它支持 2.0.0+ ,你可以参考这个doc
  • 您可以尝试使用 microsoft.data.sqlclient 代替 System.data.sql 客户端吗,您可以使用命令从 dotnet cli 安装它dotnet add package Microsoft.Data.SqlClient --version 3.0.1
  • 嗨@AnsumanBal-MT,SSIS 包正在使用 System.Data.SQLClient 版本 4.0.0,有什么方法可以在不使用 Microsoft.Data.SqlClient 的情况下使用服务主体身份验证??
  • AFAIK,, system.data.sqlclient 仅支持 SQL 身份验证或 AAD 用户身份验证,但不支持服务主体或其他身份验证方法,因此如果您想使用服务主体或其他类似设备代码流或托管身份那么你需要使用 microsoft.data.sqlclient
  • 嗨@AnsumanBal-MT,我已经GACed 并在脚本任务中使用了Microsoft.Data.SqlClient 而不是System.Data.SqlClient dll。但现在包因错误无法加载 DLL 'Microsoft.Data.SqlClient.SNI.x64.dll' 失败:找不到指定的模块。 (来自 HRESULT 的异常:0x8007007E)也无法 GAC 这个 dll。错误将程序集添加到缓存失败:该模块应包含程序集清单。

标签: azure-sql-server azure-service-principal spn


【解决方案1】:

SSIS 包使用 System.Data.SQLClient 版本 4.0.0,有吗 我们可以通过任何方式使用服务主体身份验证而不使用 Microsoft.Data.SqlClient??

System.Data.SQlClient 仅支持 SQL 身份验证AAD 用户帐户身份验证

因此,如果您想使用 Service Principal 或其他身份验证方法,那么您应该使用 Microsoft.Data.SQLClient,因为它从版本 2.0.0+ 开始支持。

从 dotnet CLI 安装 Microsoft.Data.SQLClient 包的命令:

dotnet add package Microsoft.Data.SqlClient --version 3.0.1

那么你可以使用下面的:

string ConnectionString = @"Server=servername.database.windows.net; Authentication=Active Directory Service Principal; Database=testdb; User Id=AppId; Password=secret";

using (SqlConnection conn = new SqlConnection(ConnectionString)) {
    conn.Open();
}

参考:

Using Azure Active Directory authentication with SqlClient - ADO.NET Provider for SQL Server | Microsoft Docs

【讨论】:

    猜你喜欢
    • 2016-02-14
    • 2010-11-05
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    相关资源
    最近更新 更多