在 Azure 数据工厂或 Azure Synapse Analytics 中结合使用 Azure SQL 托管实例和 SQL Server Integration Services (SSIS)
适用于:Azure 数据工厂 Azure Synapse Analytics
现在,可将 SQL Server Integration Services (SSIS) 项目、包和工作负荷移到 Azure 云。 在 Azure SQL 数据库或 SQL 托管实例上使用 SQL Server Management Studio (SSMS) 等熟悉工具来部署、运行和管理 SSIS 项目和包。 本文重点介绍了在结合使用 Azure SQL 托管实例和 Azure-SSIS Integration Runtime (IR) 时的以下特定方面:
- 为 Azure-SSIS IR 预配由 Azure SQL 托管实例托管的 SSIS 目录 (SSISDB)
- 通过 Azure SQL 托管实例代理作业执行 SSIS 包
- 通过 Azure SQL 托管实例代理作业清理 SSISDB 日志
- 使用 Azure SQL 托管实例进行 Azure-SSIS IR 故障转移
- 将本地 SSIS 工作负荷迁移到 ADF 中的 SSIS
为 Azure-SSIS IR 预配由 Azure SQL 托管实例托管的 SSISDB
先决条件
选择 Microsoft Entra 身份验证时,在 Azure SQL 托管实例上启用 Microsoft Entra ID。
选择如何连接 SQL 托管实例,即是通过专用终结点进行连接,还是通过公共终结点进行连接:
通过专用终结点(首选)
选择 Azure-SSIS IR 要联接到的虚拟网络:
- 与托管实例位于相同的虚拟网络中,但位于不同的子网。
- 通过虚拟网络对等互联(由于全局 VNet 对等互联约束,仅限于相同的区域)或通过虚拟网络到虚拟网络的连接,与托管实例位于不同的虚拟网络中。
若要详细了解 SQL 托管实例连接性,请参阅将应用程序连接到 Azure SQL 托管实例。
通过公共终结点
Azure SQL 托管实例可通过公共终结点进行连接。 若要允许 SQL 托管实例和 Azure-SSIS IR 之间的流量,必须满足入站和出站要求:
当 Azure-SSIS IR 不在虚拟网络中时(首选)
SQL 托管实例的入站要求,以允许来自 Azure-SSIS IR 的入站流量。
传输协议 源 源端口范围 目标 目标端口范围 TCP Azure 云服务标记 * VirtualNetwork 3342 有关详细信息,请参阅允许网络安全组上的公共终结点流量。
当 Azure-SSIS IR 在虚拟网络中时
有一种特殊情况,即当 SQL 托管实例位于 Azure-SSIS IR 不支持的区域中时,由于全球 VNet 对等互连限制,Azure-SSIS IR 位于没有 VNet 对等互连的虚拟网络中。 在这种情况下,虚拟网络中的 Azure-SSIS IR 通过公共终结点连接 SQL 托管实例 。 使用下面的网络安全组 (NSG) 规则以允许 SQL 托管实例和 Azure-SSIS IR 之间的流量:
SQL 托管实例的入站要求,以允许来自 Azure-SSIS IR 的入站流量。
传输协议 源 源端口范围 目标 目标端口范围 TCP Azure-SSIS IR 的静态 IP 地址
有关详细信息,请参阅为 Azure-SSIS IR 创建自己的公共 IP。* VirtualNetwork 3342 Azure-SSIS IR 的出站要求,以允许流向 SQL 托管实例的出站流量。
传输协议 源 源端口范围 目标 目标端口范围 TCP VirtualNetwork * SQL 托管实例公共终结点 IP 地址 3342
配置虚拟网络
用户权限。 创建 Azure-SSIS IR 的用户必须至少使用以下选项之一在 Azure 数据工厂资源上进行角色分配:
- 使用内置的“网络参与者”角色。 此角色具有 Microsoft.Network/* 权限,具有比所需作用域更大的作用域。
- 创建仅包括必需的 Microsoft.Network/virtualNetworks/*/join/action 权限的一个自定义角色。 如果还需要在将 Azure-SSIS IR 联接到 Azure 资源管理器虚拟网络的同时为它创建自己的公共 IP 地址,还请在角色中添加 Microsoft.Network/publicIPAddresses/*/join/action 权限。
虚拟网络。
请确保虚拟网络的资源组可以创建和删除特定 Azure 网络资源。
Azure-SSIS IR 需要在与虚拟网络相同的资源组下创建某些网络资源。 这些资源包括:
- 名为 <Guid>-azurebatch-cloudserviceloadbalancer 的 Azure 负载均衡器
- 名为 *<Guid>-azurebatch-cloudservicenetworksecuritygroup 的网络安全组
- Azure 公共 IP 地址,名为 -azurebatch-cloudservicepublicip
这些资源在 Azure-SSIS IR 启动时创建, 并在 Azure-SSIS IR 停止时删除。 为了避免阻止 Azure-SSIS IR 停止,请不要在其他资源中重用这些网络资源。
确保虚拟网络所属的资源组/订阅中没有任何资源锁。 如果配置只读/删除锁,则启动和停止 Azure-SSIS IR 将会失败,或者它会停止响应。
请确保你的 Azure Policy 定义不会阻止在虚拟网络所属的资源组/订阅下创建以下资源:
- Microsoft.Network/LoadBalancers
- Microsoft.Network/NetworkSecurityGroups
允许网络安全组 (NSG) 上流量的规则,以允许 SQL 托管实例和 Azure-SSIS IR 之间的流量,以及 Azure-SSIS IR 所需的流量。
SQL 托管实例的入站要求,以允许来自 Azure-SSIS IR 的入站流量。
传输协议 源 源端口范围 目标 目标端口范围 注释 TCP VirtualNetwork * VirtualNetwork 1433、11000-11999 如果 SQL 数据库服务器连接策略设置为“代理”(而不是“重定向”),那么只需要端口 1433。 Azure-SSIS IR 的出站要求,以允许流向 SQL 托管实例的出站流量,以及 Azure-SSIS IR 所需的其他流量。
传输协议 源 源端口范围 目标 目标端口范围 注释 TCP VirtualNetwork * VirtualNetwork 1433、11000-11999 允许流向 SQL 托管实例的出站流量。 如果连接策略设置为“代理”(而不是“重定向”),那么只需要端口 1433。 TCP VirtualNetwork * AzureCloud 443 虚拟网络中的 Azure-SSIS IR 节点使用此端口来访问 Azure 服务,如 Azure 存储和 Azure 事件中心。 TCP VirtualNetwork * Internet 80 (可选)虚拟网络中的 Azure-SSIS IR 节点使用此端口从 Internet 下载证书吊销列表。 如果阻止此流量,在启动 IR 时可能会出现性能下降,并且无法在证书吊销列表中检查证书的使用情况。 若要进一步将目标范围缩小到特定 FQDN,请参阅配置用户定义的路由 (UDR)。 TCP VirtualNetwork * 存储 445 (可选)只有当你要执行存储在 Azure 文件存储中的 SSIS 包时,才需要此规则。 Azure-SSIS IR 的入站要求,以允许 Azure-SSIS IR 所需的流量。
传输协议 源 源端口范围 目标 目标端口范围 注释 TCP BatchNodeManagement * VirtualNetwork 29876、29877(如果将 IR 联接到资源管理器虚拟网络)
10100、20100、30100(如果将 IR 加入经典虚拟网络)数据工厂服务使用这些端口来与虚拟网络中 Azure-SSIS IR 的节点通信。
无论是否创建子网级 NSG,数据工厂都始终会在附加到托管 Azure-SSIS IR 的虚拟机的网络接口卡 (NIC) 级别配置 NSG。 此 NIC 级别的 NSG 仅允许来自指定端口上的数据工厂 IP 地址的入站流量。 即使你在子网级别向 Internet 流量打开这些端口,来自非数据工厂 IP 地址的流量也会在 NIC 级别被阻止。TCP CorpNetSaw * VirtualNetwork 3389 (可选)仅当 Azure 支持人员在高级故障排除期间要求客户打开此端口时,才需要此规则。故障排除后可立即将其关闭。 CorpNetSaw 服务标记仅允许 Microsoft 企业网络中的安全访问工作站使用远程桌面。 无法在门户中选择此服务标记,只能通过 Azure PowerShell 或 Azure CLI 选择。
在 NIC 级别 NSG 处,端口 3389 是默认打开的,允许在子网级别 NSG 处控制端口 3389;但在此期间,Azure-SSIS IR 在每个 IR 节点上的 Windows 防火墙规则处默认禁止端口 3389 出站以实现保护。
有关详细信息,请参阅虚拟网络配置:
- 如果你为 Azure-SSIS IR 创建自己的公共 IP 地址
- 如果你使用自己的域名系统 (DNS) 服务器
- 如果你使用 Azure ExpressRoute 或用户定义的路由 (UDR)
- 如果你使用自定义的 Azure-SSIS IR
预配 Azure-SSIS Integration Runtime
选择 SQL 托管实例专用终结点或公共终结点。
在 Azure 门户/ADF 应用中预配 Azure-SSIS IR 时,请在“SQL 设置”页上使用创建 SSIS 目录 (SSISDB) 时涉及的 SQL 托管实例专用终结点或公共终结点。
公共终结点主机名采用 <mi_name>.public.<dns_zone>.database.chinacloudapi.cn 格式,用于连接的端口是 3342。
应用时选择 Microsoft Entra 身份验证。
有关如何启用 Microsoft Entra 身份验证的详细信息,请参阅在 Azure SQL 托管实例上启用 Microsoft Entra ID。
应用时,将 Azure-SSIS IR 联接到虚拟网络。
在“高级设置”页上,选择要联接到的虚拟网络和子网。
如果与 SQL 托管实例位于相同的虚拟网络中,请选择与 SQL 托管实例位于不同的子网中。
若要详细了解如何将 Azure-SSIS IR 联接到虚拟网络,请参阅将 Azure-SSIS Integration Runtime 联接到虚拟网络。
有关如何创建 Azure-SSIS IR 的详细信息,请参阅在 Azure 数据工厂中创建 Azure-SSIS 集成运行时。
清理 SSISDB 日志
SSISDB 日志保留策略由 catalog.catalog_properties 中的以下属性定义:
OPERATION_CLEANUP_ENABLED
如果值为 TRUE,则会从目录中删除超过 RETENTION_WINDOW(天)的操作详细信息和操作消息。 如果值为 FALSE,则会在目录中存储所有操作详细信息和操作消息。 注意:清理操作是由 SQL Server 作业执行。
RETENTION_WINDOW
操作详细信息和操作消息存储在目录中的天数。 如果值为 -1,保留时段是无限的。 注意:如果无需清理,请将 OPERATION_CLEANUP_ENABLED 设置为 FALSE。
若要删除在管理员设置的保留时段之外的 SSISDB 日志,可以触发存储过程 [internal].[cleanup_server_retention_window_exclusive]
。 还可以安排 SQL 托管实例代理作业执行,以触发此存储过程。