添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
稳重的佛珠  ·  sortable排序-掘金·  1 年前    · 

本文中的演练使用 Azure SQL 数据库。 还可使用 Azure SQL 托管实例。

创建 Azure-SSIS 集成运行时

如果还没有 Azure-SSIS 集成运行时,请按照 教程:部署 SSIS 包 。 无法使用数据工厂版本 1 创建 Azure-SSIS 集成运行时。

Azure PowerShell

在此部分中,将使用 Azure PowerShell 创建数据工厂管道,管道中包含可调用 SSIS 包的存储过程活动。

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅 安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

如何安装和配置 Azure PowerShell 中的说明安装最新的 Azure PowerShell 模块。

创建数据工厂

下列过程提供创建数据工厂的步骤。 可在数据工厂中使用存储过程活动创建管道。 存储过程活动在 SSISDB 数据库中执行存储过程,运行 SSIS 包。

  • 为资源组名称定义一个变量,稍后会在 PowerShell 命令中使用该变量。 将以下命令文本复制到 PowerShell,在双引号中指定 Azure 资源组 的名称,然后运行命令。 例如: "adfrg"

    $resourceGroupName = "ADFTutorialResourceGroup";
    

    如果该资源组已存在,请勿覆盖它。 为 $ResourceGroupName 变量分配另一个值,然后再次运行命令

  • 若要创建 Azure 资源组,请运行以下命令:

    $ResGrp = New-AzResourceGroup $resourceGroupName -location 'eastus'
    

    如果该资源组已存在,请勿覆盖它。 为 $ResourceGroupName 变量分配另一个值,然后再次运行命令。

  • 定义一个用于数据工厂名称的变量。

    更新数据工厂名称,使之全局唯一。

    $DataFactoryName = "ADFTutorialFactory";
    
  • 要创建数据工厂,请运行下面的 New-AzDataFactory cmdlet,使用 $ResGrp 变量中的 Location 和 ResourceGroupName 属性:

    $df = New-AzDataFactory -ResourceGroupName $ResourceGroupName -Name $dataFactoryName -Location "East US"
    

    请注意以下几点:

  • Azure 数据工厂的名称必须全局唯一。 如果收到以下错误,请更改名称并重试。

    The specified Data Factory name 'ADFTutorialFactory' is already in use. Data Factory names must be globally unique.
    
  • 若要创建数据工厂实例,用于登录到 Azure 的用户帐户必须属于参与者所有者角色,或者是 Azure 订阅的管理员

    创建 Azure SQL 数据库链接服务

    创建一个链接服务,将托管 SSIS 目录的 Azure SQL 数据库中的数据库链接到数据工厂。 数据工厂使用此链接服务中的信息连接到 SSISDB 数据库,并执行存储过程来运行 SSIS 包。

  • 在 C:\ADF\RunSSISPackage 文件夹中创建一个名为 AzureSqlDatabaseLinkedService.json 的 JSON 文件,并在其中包含以下内容 :

    保存文件之前,请将 <servername>、<username>@<servername> 和 <password> 替换为 Azure SQL 数据库的值。

    "name": "AzureSqlDatabaseLinkedService", "properties": { "type": "AzureSqlDatabase", "typeProperties": { "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=SSISDB;User ID=<username>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
  • 在 Azure PowerShell 中,切换到 C:\ADF\RunSSISPackage 文件夹 。

  • 运行 New-AzDataFactoryLinkedService cmdlet,创建链接服务:AzureSqlDatabaseLinkedService 。

    New-AzDataFactoryLinkedService $df -File ".\AzureSqlDatabaseLinkedService.json"
    

    创建输出数据集

    此输出数据集是一个虚拟数据集,用于驱动管道的计划。 注意,频率设置为“小时”,间隔设置为“1”。 因此,管道在启动至结束期间,一小时运行一次。

  • 创建一个 OutputDataset.json 文件,并在其中包含以下内容:

    "name": "sprocsampleout", "properties": { "type": "AzureSqlTable", "linkedServiceName": "AzureSqlLinkedService", "typeProperties": { }, "availability": { "frequency": "Hour", "interval": 1
  • 运行 New-AzDataFactoryDataset cmdlet,创建一个数据集。

    New-AzDataFactoryDataset $df -File ".\OutputDataset.json"
    

    使用存储过程活动创建管道

    在此步骤中,使用存储过程活动创建管道。 该活动调用 sp_executesql 存储过程来运行 SSIS 包。

  • 在 C:\ADF\RunSSISPackage 文件夹中创建一个名为 MyPipeline.json 的 JSON 文件,并在其中包含以下内容

    保存文件之前,请将 <folder name>、<project name> 和 <package name> 替换为 SSIS 目录中文件夹、项目和包的名称。

    "name": "MyPipeline", "properties": { "activities": [{ "name": "SprocActivitySample", "type": "SqlServerStoredProcedure", "typeProperties": { "storedProcedureName": "sp_executesql", "storedProcedureParameters": { "stmt": "DECLARE @return_value INT, @exe_id BIGINT, @err_msg NVARCHAR(150) EXEC @return_value=[SSISDB].[catalog].[create_execution] @folder_name=N'<folder name>', @project_name=N'<project name>', @package_name=N'<package name>', @use32bitruntime=0, @runinscaleout=1, @useanyworker=1, @execution_id=@exe_id OUTPUT EXEC [SSISDB].[catalog].[set_execution_parameter_value] @exe_id, @object_type=50, @parameter_name=N'SYNCHRONIZED', @parameter_value=1 EXEC [SSISDB].[catalog].[start_execution] @execution_id=@exe_id, @retry_count=0 IF(SELECT [status] FROM [SSISDB].[catalog].[executions] WHERE execution_id=@exe_id)<>7 BEGIN SET @err_msg=N'Your package execution did not succeed for execution ID: ' + CAST(@exe_id AS NVARCHAR(20)) RAISERROR(@err_msg,15,1) END" "outputs": [{ "name": "sprocsampleout" "scheduler": { "frequency": "Hour", "interval": 1 "start": "2017-10-01T00:00:00Z", "end": "2017-10-01T05:00:00Z", "isPaused": false
  • 要创建管道 RunSSISPackagePipeline,请运行 New-AzDataFactoryPipeline cmdlet 。

    $DFPipeLine = New-AzDataFactoryPipeline -DataFactoryName $DataFactory.DataFactoryName -ResourceGroupName $ResGrp.ResourceGroupName -Name "RunSSISPackagePipeline" -DefinitionFile ".\RunSSISPackagePipeline.json"
    

    监视管道运行

  • 运行 Get-AzDataFactorySlice,获取有关输出数据集**(管道的输出表)的所有切片的详细信息。

    Get-AzDataFactorySlice $df -DatasetName sprocsampleout -StartDateTime 2017-10-01T00:00:00Z
    

    请注意,此处指定的 StartDateTime 与在管道 JSON 中指定的开始时间是相同的。

  • 运行 Get-AzDataFactoryRun,获取特定切片的活动运行详细信息。

    Get-AzDataFactoryRun $df -DatasetName sprocsampleout -StartDateTime 2017-10-01T00:00:00Z
    

    可以继续运行此 cmdlet,直到切片进入“就绪”状态或“失败”状态。

    可在服务器中针对 SSISDB 数据库运行以下查询,验证是否执行了该包。

    select * from catalog.executions
    

    有关存储过程活动的详细信息,请参阅存储过程活动一文。

  •