【问题标题】:How to connect to an Azure SQL managed instance in SSIS using a service principal in a Azure data factory pipeline?如何使用 Azure 数据工厂管道中的服务主体连接到 SSIS 中的 Azure SQL 托管实例?
【发布时间】:2022-07-27 09:07:35
【问题描述】:

我正在尝试使用 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 托管实例上的用户,并且它对数据库具有 db 所有者权限。我检查了日志,并且身份验证正在访问 SQL 托管实例,但它似乎正在尝试使用 SQL 身份验证而不是 Active Directory 服务主体身份验证。

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

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

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

【问题讨论】:

    标签: azure authentication ssis azure-data-factory azure-data-factory-pipeline


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-04-06
      • 1970-01-01
      • 2022-01-24
      • 2019-03-15
      • 2020-01-08
      • 1970-01-01
      • 2022-10-12
      • 2017-06-29
      • 2021-02-11
      相关资源
      最近更新 更多