ADO.NET 连接管理器

适用于: SQL Server Azure 数据工厂中的 SSIS Integration Runtime

ADO.NET 连接管理器使包能够使用 .NET 访问接口访问数据源。 通常,可以使用此连接管理器来访问数据源(例如 Microsoft SQL Server)。 还可以访问在用 C# 等语言以托管代码编写的自定义任务中通过 OLE DB 和 XML 公开的数据源。

将 ADO.NET 连接管理器添加到包时,SQL Server Integration Services 会创建在运行时作为 ADO.NET 连接进行解析的连接管理器。 它设置连接管理器的属性,并将连接管理器添加到包上的“Connections”集合 。

该连接管理器的 ConnectionManagerType 属性设置为 ADO.NETConnectionManagerType 的值受到限定,以包含连接管理器所使用的 .NET 访问接口的名称。

注意

Microsoft Entra ID 旧称 Azure Active Directory (Azure AD)。

ADO.NET 连接管理器故障排除

SQL 2022 及更低版本不支持 Microsoft.Data.SqlClient 驱动程序。 如果需要 msi 或基于 Microsoft Entra ID 的身份验证方法,请改用 Oledb 连接管理器。

可以记录 ADO.NET 连接管理器对外部数据访问接口所做的调用。 然后可以对 ADO.NET 连接管理器与外部数据源的连接进行故障排除。 若要记录 ADO.NET 连接管理器对外部数据访问接口所做的调用,请在包级别启用包日志记录并选择“诊断” 事件。 有关详细信息,请参阅 包执行的疑难解答工具

ADO.NET 连接管理器在读取数据时,某些 SQL Server 日期数据类型的数据生成下表中显示的结果。

SQL Server 数据类型 结果
timedatetimeoffset 除非包使用参数化 SQL 命令,否则,包将失败。 若要使用参数化 SQL 命令,请在包中使用执行 SQL 任务。 有关详细信息,请参阅 执行 SQL 任务执行 SQL 任务中的参数和返回代码
datetime2 ADO.NET 连接管理器截断毫秒值。

注意

有关 SQL Server 数据类型及其如何映射到 Integration Services 数据类型的详细信息,请参阅数据类型 (Transact-SQL)Integration Services 数据类型

ADO.NET 连接管理器配置

可以通过 SSIS 设计器或以编程方式来设置属性。

  • 提供配置为满足选定 .NET 访问接口的要求的特定连接字符串。

  • 包括要连接到的数据源的名称(取决于访问接口)。

  • 为选定的访问接口提供相应的安全凭据。

  • 指示是否在运行时保留从连接管理器中创建的连接。

ADO.NET 连接管理器的许多配置选项取决于该连接管理器所使用的 .NET 访问接口。

有关可以在 SSIS 设计器中设置的属性的详细信息,请参阅配置 ADO.NET 连接管理器

有关以编程方式配置连接管理器的信息,请参阅 ConnectionManager以编程方式添加连接项目。

配置 ADO.NET 连接管理器

可以使用“配置 ADO.NET 连接管理器” 对话框,添加与可使用 .NET Framework 数据访问接口访问的数据源之间的连接。 此类访问接口的示例有 SqlClient 访问接口。 连接管理器可使用现有连接,或者您也可以创建一个新的连接。

若要了解有关 ADO.NET 连接管理器的详细信息,请参阅 ADO.NET Connection Manager

选项

数据连接
从列表中选择一个现有的 ADO.NET 数据连接。

数据连接属性
查看所选 ADO.NET 数据连接的属性和值。

新建
通过使用“连接管理器”对话框创建 ADO.NET 数据连接。

删除
选择一个连接,然后通过选择“删除” 来删除该连接。

Azure 资源身份验证的托管标识

Azure 数据工厂 (ADF) 中的 Azure-SSIS Integration Runtime (IR) 上运行 SSIS 包时,可以将 Microsoft Entra 身份验证与 ADF 的托管标识一起用于访问 Azure SQL 数据库或 SQL 托管实例。 Azure-SSIS IR 可以使用此托管标识访问数据并从/向数据库复制数据。

注意

当你使用用户分配的托管标识进行身份验证时,需要使用同一身份启用 SSIS 集成运行时。 有关详细信息,请参阅为 Azure-SSIS 集成运行时启用 Microsoft Entra 身份验证

要使 ADF 能够使用其托管标识访问 Azure SQL 数据库,请执行以下步骤:

  1. 通过 Azure 门户中为 Azure SQL 数据库中的逻辑服务器预配 MMicrosoft Entra 管理员(如果尚未)。 Microsoft Entra 管理员可以是用户或组。 如果将组分配为管理员,并且 ADF 的托管标识是该组的成员,则可以跳过步骤 2 和步骤 3。 管理员对逻辑服务器具有完全访问权限。

  2. 创建一个包含的数据库用户,用于表示为 ADF 分配的托管标识。 使用 SQL Server Management Studio (SSMS) 连接到要从/向其复制数据的数据库,其 Microsoft Entra 用户至少具有 ALTER ANY USER 权限。 运行以下 T-SQL 语句:

    CREATE USER [your managed identity name] FROM EXTERNAL PROVIDER;
    

    如果将系统分配的托管标识用于 ADF,则托管标识名称应为 ADF 名称。 如果将用户分配的托管标识用于 ADF,则你的托管标识名称托管标识的名称。

  3. 向 ADF 的托管标识授予所需的权限,就像通常为 SQL 用户所做的那样。 有关相应角色,请参阅数据库级别角色。 运行以下 T-SQL 语句。 有关更多选项,请参阅本文

    EXEC sp_addrolemember [role name], [your managed identity name];
    

要使用分配给 ADF 的托管标识访问 Azure SQL 托管实例,请执行以下步骤:

  1. 在 Azure 门户中为 Azure SQL 托管实例预配 Microsoft Entra 管理员(如果尚未这样做)。 Microsoft Entra 管理员可以是用户或组。 如果将组分配为管理员,并且托管标识是该组的成员,则你可以跳过步骤 2 - 4。 管理员将拥有对托管实例的完全访问权限。

  2. 为 ADF 的托管标识创建登录名。 在 SSMS 中,使用具有 sysadmin 权限的帐户或 Microsoft Entra 管理员连接到托管实例。在 master 数据库中,运行以下 T-SQL 语句:

    CREATE LOGIN [your managed identity name] FROM EXTERNAL PROVIDER;
    

    如果将系统分配的托管标识用于 ADF,则托管标识名称应为 ADF 名称。 如果将用户分配的托管标识用于 ADF,则你的托管标识名称托管标识的名称。

  3. 创建一个包含的数据库用户,用于表示 ADF 的托管标识。 使用 SSMS 连接到要从其中复制数据的数据库,并运行以下 T-SQL 语句:

    CREATE USER [your managed identity name] FROM EXTERNAL PROVIDER;
    
  4. 向 ADF 的托管标识授予所需的权限,就像通常为 SQL 用户所做的那样。 运行以下 T-SQL 语句。 有关更多选项,请参阅本文

    ALTER ROLE [role name e.g., db_owner] ADD MEMBER [your managed identity name];
    

最后,可以在 ADO.NET 连接管理器上配置使用 ADF 的托管标识进行 Microsoft Entra 身份验证。 完成此操作的方法有两种:

  • 在设计时进行配置。 在 SSIS 设计器中,右键单击 ADO.NET 连接管理器,然后选择“属性”。 将属性 ConnectUsingManagedIdentity 更新为 True

    注意

    在 SSIS 设计器或 SQL Server 上运行包时,连接管理器属性 ConnectUsingManagedIdentity 不起作用,指示使用 ADF 的托管标识进行 Microsoft Entra 身份验证。

  • 在运行时进行配置。 通过 SSMS 运行包或在 ADF 管道中执行 SSIS 包活动时,请查找 ADO.NET 连接管理器并将其属性 ConnectUsingManagedIdentity 更新为 True

    注意

    在 Azure-SSIS IR 上,在将 Microsoft Entra 身份验证与 ADF 的托管标识一起使用时,将覆盖在 ADO.NET 连接管理器上预先配置的所有其他身份验证方法(例如集成安全性和密码)。

要在现有包上配置使用 ADF 的托管标识进行 Microsoft Entra 身份验证,首选方法是至少使用最新 SSIS 设计器重新生成一次 SSIS 项目。 重新部署 SSIS 项目以在 Azure-SSIS IR 上运行,这样新的连接管理器属性 ConnectUsingManagedIdentity 才会自动添加到项目中的所有 ADO.NET 连接管理器。 或者,你可以直接结合使用属性重写和在运行时分配给 True 的属性路径 \Package.Connections[{连接管理器名称}].Properties[ConnectUsingManagedIdentity]

另请参阅