【发布时间】: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