0

我正在尝试执行一个 SSIS 包,其中源是 SQL Server,目标是带有身份验证“Active Directory 服务主体”的 Azure SQL。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为目标

4

1 回答 1

2

SSIS 包使用 System.Data.SQLClient 版本 4.0.0,有什么方法可以在不使用 Microsoft.Data.SqlClient 的情况下使用服务主体身份验证?

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

因此,如果您想使用服务主体或其他身份验证方法,那么您应该使用Microsoft.Data.SQLClient它,因为它受 version 支持2.0.0+

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

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();
}

参考:

使用带有 SqlClient 的 Azure Active Directory 身份验证 - SQL Server 的 ADO.NET 提供程序 | 微软文档

于 2021-10-20T10:39:47.073 回答