azure - 如何使用 Azure 数据工厂管道中的服务主体连接到 SSIS 中的 Azure SQL 托管实例?

标签 azure authentication ssis azure-data-factory

我正在尝试使用 SSIS 中的 Azure 服务主体连接到 Azure SQL 托管实例。我使用 Microsoft OLE DB Driver for SQL Server 在 SSIS 中创建了一个连接管理器。在连接管理器中,我使用 Active Directory - 服务主体作为身份验证类型连接到服务器。我将服务主体 GUID 作为连接管理器中的用户名和密码进行传递。

当我在 Visual Studio 中对此进行测试时,我能够建立连接并运行 SSIS。 SSIS 包按预期传输数据,没有出现问题。但是,当我部署 Azure SQL 服务器并在 Azure 数据工厂管道中运行 SSIS 包时,出现错误。

用户(服务主体 GUID)登录失败。 SSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。对连接管理器“Azure 服务主体”的 AcquireConnection 方法调用失败,错误代码为 0xC0202009。

服务主体设置为 SQL 托管实例上的用户,并且具有数据库的数据库所有者权限。我检查了日志,身份验证正在访问 SQL 托管实例,但看起来它正在尝试使用 SQL 身份验证而不是 Active Directory 服务主体身份验证。

这就是连接字符串的样子。

数据源=(SQL 托管实例);用户 ID=(服务主体 GUID);初始目录=(我的数据库);提供程序=MSOLEDBSQL.1;持久安全信息=False;自动翻译=False;应用程序名称=( SSIS 包名称和 GUID);对数据使用加密=True;身份验证=ActiveDirectoryServicePrincipal;

我检查了 Visual Studio 中的连接字符串与数据工厂中使用的连接字符串,它们是相同的。我尝试使用服务主体帐户名称而不是 GUID,并且得到相同的结果。 SSIS 包非常简单,它连接到一台服务器并将数据移动到托管实例。

最佳答案

AD 服务主体在驱动程序级别受支持,但“Microsoft OLEDB Driver 18 for SQL Server - 18.1.0.0”中内置的 SSIS IR 版本不支持。理论上,自定义设置安装支持的驱动版本( https://learn.microsoft.com/en-us/sql/connect/oledb/features/using-azure-active-directory ),可以工作,但需要尝试。

如果你可以使用MSI。 SSIS IR 本身支持 MSI https://learn.microsoft.com/en-us/sql/integration-services/connection-manager/ole-db-connection-manager?view=sql-server-2017#managed-identities-for-azure-resources-authentication .

关于azure - 如何使用 Azure 数据工厂管道中的服务主体连接到 SSIS 中的 Azure SQL 托管实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73123894/

相关文章:

sql-server - OLE DB 源到具有不同列的多个目标

azure - 如何将文件从共享点复制到数据湖存储?

asp.net - Azure SqlException : Database on server is not currently available

同一应用程序中的 Azure AD B2B 和 B2C

使用 AWS Cognito 进行 R Shiny 身份验证

java - Web 应用程序为不同的用户提供不同的 URL

visual-studio - SSIS脚本任务 "The binary code for the script is not found"

sql-server-2008 - LineageID 是字符串或整数

c# - Microsoft.Azure.KeyVault.Core 无法使用 NETStandard20 进行恢复

ios - 是否有任何库可以在 iOS 中实现 twitter web View 登录对话框