通过 Azure PowerShell 将 Azure-SSIS 集成运行时加入虚拟网络

适用于: Azure 数据工厂 Azure Synapse Analytics

提示

试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用

本文演示如何通过 Azure PowerShell 在 Azure 数据工厂中将现有 Azure-SQL Server Integration Services (SSIS) 集成运行时 (IR) 加入虚拟网络。

注意

对于 Azure Synapse Analytics 中的 Azure-SSIS IR,替换为相应的 Azure Synapse Analytics PowerShell 接口:Set-AzSynapseIntegrationRuntime (Az.Synapse), Start-AzSynapseIntegrationRuntimeStop-AzSynapseIntegrationRuntime

创建变量

$ResourceGroupName = "[your Azure resource group name]"
$DataFactoryName = "[your data factory name]"
$AzureSSISName = "[your Azure-SSIS IR name]"
# Virtual network info: Azure Resource Manager or Classic
$VnetId = "[your virtual network resource ID or leave it empty]" # REQUIRED if you use Azure SQL Database server configured with a private endpoint/IP firewall rule/virtual network service endpoint or Azure SQL Managed Instance that joins a virtual network to host SSISDB, or if you require access to on-premises data without configuring a self-hosted IR. We recommend Azure Resource Manager virtual network, because classic virtual network will be deprecated soon.
$SubnetName = "[your subnet name or leave it empty]" # WARNING: Use the same subnet as the one used for Azure SQL Database server configured with a virtual network service endpoint or a different subnet from the one used for Azure SQL Managed Instance that joins a virtual network
$SubnetId = $VnetId + '/subnets/' + $SubnetName 
# Virtual network injection method: Standard or Express. For comparison, see https://docs.azure.cn/data-factory/azure-ssis-integration-runtime-virtual-network-configuration.
$VnetInjectionMethod = "Standard" # Standard by default, whereas Express lets you use the express virtual network injection method
# Public IP address info: OPTIONAL to provide two standard static public IP addresses with DNS name under the same subscription and in the same region as your virtual network
$FirstPublicIP = "[your first public IP address resource ID or leave it empty]"
$SecondPublicIP = "[your second public IP address resource ID or leave it empty]"

配置虚拟网络

在将 Azure-SSIS IR 加入虚拟网络之前,需要先配置该虚拟网络。 若要自动配置需加入虚拟网络的 Azure-SSIS IR 的虚拟网络权限和设置,请添加以下脚本:

# Make sure to run this script against the subscription to which the virtual network belongs.
if(![string]::IsNullOrEmpty($VnetId) -and ![string]::IsNullOrEmpty($SubnetName))
{
    # Register to the Azure Batch resource provider
    $BatchApplicationId = "ddbf3205-c6bd-46ae-8127-60eb93363864"
    $BatchObjectId = (Get-AzADServicePrincipal -ServicePrincipalName $BatchApplicationId).Id
    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    while(!(Get-AzResourceProvider -ProviderNamespace "Microsoft.Batch").RegistrationState.Contains("Registered"))
    {
    Start-Sleep -s 10
    }
    if($VnetId -match "/providers/Microsoft.ClassicNetwork/")
    {
        # Assign the VM contributor role to Microsoft.Batch
        New-AzRoleAssignment -ObjectId $BatchObjectId -RoleDefinitionName "Classic Virtual Machine Contributor" -Scope $VnetId
    }
}

创建 Azure-SSIS IR 并将其加入虚拟网络

可以创建 Azure-SSIS IR,并将其加入虚拟网络。 有关完整的脚本和说明,请参阅创建 Azure-SSIS IR

将现有 Azure-SSIS IR 加入虚拟网络

创建 Azure-SSIS IR 一文介绍了如何在同一个脚本中创建 Azure-SSIS IR 并将其加入虚拟网络。 如果已有一个 Azure-SSIS IR,请执行以下步骤,将其加入虚拟网络:

  1. 停止 Azure-SSIS IR。
  2. 配置 Azure-SSIS IR 以加入虚拟网络。
  3. 启动 Azure-SSIS IR。

停止 Azure-SSIS IR

必须停止 Azure-SSIS IR,然后才能将其加入虚拟网络。 此命令释放该运行时的所有节点并停止计费:

Stop-AzDataFactoryV2IntegrationRuntime -ResourceGroupName $ResourceGroupName `
    -DataFactoryName $DataFactoryName `
    -Name $AzureSSISName `
    -Force 

配置 Azure-SSIS IR 以加入虚拟网络

若将 Azure-SSIS IR 加入虚拟网络,请运行 Set-AzDataFactoryV2IntegrationRuntime 命令:

Set-AzDataFactoryV2IntegrationRuntime -ResourceGroupName $ResourceGroupName `
    -DataFactoryName $DataFactoryName `
    -Name $AzureSSISName `
    -SubnetId $SubnetId `
    -VNetInjectionMethod $VnetInjectionMethod

# Add public IP address parameters if you use the standard virtual network injection method and bring your own static public IP addresses
if($VnetInjectionMethod -eq "Standard")
{
    if(![string]::IsNullOrEmpty($FirstPublicIP) -and ![string]::IsNullOrEmpty($SecondPublicIP))
    {
        $publicIPs = @($FirstPublicIP, $SecondPublicIP)
        Set-AzDataFactoryV2IntegrationRuntime -ResourceGroupName $ResourceGroupName `
            -DataFactoryName $DataFactoryName `
            -Name $AzureSSISName `
            -PublicIPs $publicIPs
    }
}

启动 Azure-SSIS IR

若要启动 Azure-SSIS IR,请运行以下命令:

Start-AzDataFactoryV2IntegrationRuntime -ResourceGroupName $ResourceGroupName `
    -DataFactoryName $DataFactoryName `
    -Name $AzureSSISName `
    -Force

如果使用的是快速/标准虚拟网络注入方法,此命令分别需要 5/20-30 分钟才能完成。

有关 Azure-SSIS IR 的详细信息,请参阅以下文章:

  • Azure-SSIS IR。 此文提供有关 IR(包括 Azure-SSIS IR)的一般概念性信息。
  • 教程:将 SSIS 包部署到 Azure 中的分步说明创建一个。 此教程提供有关创建 Azure-SSIS IR 的分步说明。 它使用 Azure SQL 数据库服务器来托管 SSISDB。
  • 创建 Azure-SSIS IR。 此文对本教程的内容做了扩充。 它提供了一些说明,介绍如何使用配置了虚拟网络服务终结点/IP 防火墙规则/专用终结点的 Azure SQL 数据库服务器或加入虚拟网络的 Azure SQL 托管实例来托管 SSISDB。 它介绍了如何将 Azure-SSIS IR 加入虚拟网络。
  • 监视 Azure-SSIS IR。 此文介绍如何检索并了解有关 Azure-SSIS IR 的信息。
  • 管理 Azure-SSIS IR。 此文介绍如何停止、启动或删除 Azure-SSIS IR。 此外,介绍如何通过添加更多节点来横向扩展 Azure-SSIS IR。