تشغيل حزمة SSIS مع تنفيذ نشاط حزمة SSIS في Azure Data Factory مع PowerShell

ينطبق على: Azure Data Factory Azure Synapse Analytics

تلميح

جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!

توضح هذه المقالة كيفية تشغيل حزمة خدمات تكامل خادم SQL (SSIS) في مسار Azure Data Factory باستخدام PowerShell ونشاط تنفيذ حزمة SSIS.

المتطلبات الأساسية

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

أنشئ وقت تشغيل تكامل Azure-SSIS (IR) إذا لم يكن لديك واحد بالفعل باتباع الإرشادات خطوة بخطوة في البرنامج التعليمي: توفير Azure-SSIS IR .

قم بإنشاء مصنع بيانات باستخدام Azure-SSIS IR

يمكنك إما استخدام مصنع بيانات موجود بالفعل مزود بوقت تشغيل التكامل لـ Azure-SSIS أو إنشاء مصنع بيانات جديد باستخدام Azure-SSIS IR. اتبع الإرشادات خطوة بخطوة في البرنامج التعليمي: نشر حزم SSIS إلى Azure عبر PowerShell.

إنشاء مسار مع نشاط تنفيذ حزمة SSIS

في هذه الخطوة، تقوم بإنشاء مسار مع نشاط تنفيذ حزمة SSIS. يقوم النشاط بتشغيل حزمة SSIS الخاصة بك.

  1. أنشئ ملف JSON باسم RunSSISPackagePipeline.json في C:\ADF\RunSSISPackage المجلد بمحتوى مشابه للمثال التالي.

    هام

    استبدل أسماء الكائنات والأوصاف والمسارات وقيم الخصائص أو المعلمات وكلمات المرور وقيم المتغيرات الأخرى قبل حفظ الملف.

    {
        "name": "RunSSISPackagePipeline",
        "properties": {
            "activities": [{
                "name": "MySSISActivity",
                "description": "My SSIS package/activity description",
                "type": "ExecuteSSISPackage",
                "typeProperties": {
                    "connectVia": {
                        "referenceName": "MyAzureSSISIR",
                        "type": "IntegrationRuntimeReference"
                    },
                    "executionCredential": {
                        "domain": "MyExecutionDomain",
                        "username": "MyExecutionUsername",
                        "password": {
                            "type": "SecureString",
                            "value": "MyExecutionPassword"
                        }
                    },
                    "runtime": "x64",
                    "loggingLevel": "Basic",
                    "packageLocation": {
                        "type": "SSISDB",
                        "packagePath": "MyFolder/MyProject/MyPackage.dtsx"
                    },
                    "environmentPath": "MyFolder/MyEnvironment",
                    "projectParameters": {
                        "project_param_1": {
                            "value": "123"
                        },
                        "project_param_2": {
                            "value": {
                                "value": "@pipeline().parameters.MyProjectParameter",
                                "type": "Expression"
                            }
                        }
                    },
                    "packageParameters": {
                        "package_param_1": {
                            "value": "345"
                        },
                        "package_param_2": {
                            "value": {
                                "type": "AzureKeyVaultSecret",
                                "store": {
                                    "referenceName": "myAKV",
                                    "type": "LinkedServiceReference"
                                },
                                "secretName": "MyPackageParameter"
                            }
                        }
                    },
                    "projectConnectionManagers": {
                        "MyAdonetCM": {
                            "username": {
                                "value": "MyConnectionUsername"
                            },
                            "password": {
                                "value": {
                                    "type": "SecureString",
                                    "value": "MyConnectionPassword"
                                }
                            }
                        }
                    },
                    "packageConnectionManagers": {
                        "MyOledbCM": {
                            "username": {
                                "value": {
                                    "value": "@pipeline().parameters.MyConnectionUsername",
                                    "type": "Expression"
                                }
                            },
                            "password": {
                                "value": {
                                    "type": "AzureKeyVaultSecret",
                                    "store": {
                                        "referenceName": "myAKV",
                                        "type": "LinkedServiceReference"
                                    },
                                    "secretName": "MyConnectionPassword",
                                    "secretVersion": "MyConnectionPasswordVersion"
                                }
                            }
                        }
                    },
                    "propertyOverrides": {
                        "\\Package.MaxConcurrentExecutables": {
                            "value": 8,
                            "isSensitive": false
                        }
                    }
                },
                "policy": {
                    "timeout": "0.01:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30
                }
            }]
        }
    }
    

    لتنفيذ الحزم المخزنة في نظام الملفات / ملفات Azure، أدخل قيم الحزمة الخاصة بك وخصائص موقع السجل على النحو التالي:

    {
        {
            {
                {
                    "packageLocation": {
                        "type": "File",
                        "packagePath": "//MyStorageAccount.file.core.windows.net/MyFileShare/MyPackage.dtsx",
                        "typeProperties": {
                            "packagePassword": {
                                "type": "SecureString",
                                "value": "MyEncryptionPassword"
                            },
                            "accessCredential": {
                                "domain": "Azure",
                                "username": "MyStorageAccount",
                                "password": {
                                    "type": "SecureString",
                                    "value": "MyAccountKey"
                                }
                            }
                        }
                    },
                    "logLocation": {
                        "type": "File",
                        "logPath": "//MyStorageAccount.file.core.windows.net/MyFileShare/MyLogFolder",
                        "typeProperties": {
                            "accessCredential": {
                                "domain": "Azure",
                                "username": "MyStorageAccount",
                                "password": {
                                    "type": "AzureKeyVaultSecret",
                                    "store": {
                                        "referenceName": "myAKV",
                                        "type": "LinkedServiceReference"
                                    },
                                    "secretName": "MyAccountKey"
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    

    لتنفيذ الحزم داخل المشاريع المخزنة في نظام الملفات / ملفات Azure، أدخل القيم لخصائص موقع الحزمة على النحو التالي:

    {
        {
            {
                {
                    "packageLocation": {
                        "type": "File",
                        "packagePath": "//MyStorageAccount.file.core.windows.net/MyFileShare/MyProject.ispac:MyPackage.dtsx",
                        "typeProperties": {
                            "packagePassword": {
                                "type": "SecureString",
                                "value": "MyEncryptionPassword"
                            },
                            "accessCredential": {
                                "domain": "Azure",
                                "userName": "MyStorageAccount",
                                "password": {
                                    "type": "SecureString",
                                    "value": "MyAccountKey"
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    

    لتنفيذ الحزم المضمنة، أدخل قيم خصائص موقع الحزمة على النحو التالي:

    {
        {
            {
                {
                    "packageLocation": {
                        "type": "InlinePackage",
                        "typeProperties": {
                            "packagePassword": {
                                "type": "SecureString",
                                "value": "MyEncryptionPassword"
                            },
                            "packageName": "MyPackage.dtsx",
                            "packageContent":"My compressed/uncompressed package content",
                            "packageLastModifiedDate": "YYYY-MM-DDTHH:MM:SSZ UTC-/+HH:MM"
                        }
                    }
                }
            }
        }
    }
    

    لتنفيذ الحزم المخزنة في مخازن الحزم، أدخل قيم الحزمة الخاصة بك وخصائص موقع التكوين على النحو التالي:

    {
        {
            {
                {
                    "packageLocation": {
                        "type": "PackageStore",
                        "packagePath": "myPackageStore/MyFolder/MyPackage",
                        "typeProperties": {
                            "packagePassword": {
                                "type": "SecureString",
                                "value": "MyEncryptionPassword"
                            },
                            "accessCredential": {
                                "domain": "Azure",
                                "username": "MyStorageAccount",
                                "password": {
                                    "type": "SecureString",
                                    "value": "MyAccountKey"
                                }
                            },
                            "configurationPath": "//MyStorageAccount.file.core.windows.net/MyFileShare/MyConfiguration.dtsConfig",
                            "configurationAccessCredential": {
                                "domain": "Azure",
                                "userName": "MyStorageAccount",
                                "password": {
                                    "type": "AzureKeyVaultSecret",
                                    "store": {
                                        "referenceName": "myAKV",
                                        "type": "LinkedServiceReference"
                                    },
                                    "secretName": "MyAccountKey"
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    
  2. في Azure PowerShell، قم بالتبديل إلى C:\ADF\RunSSISPackage المجلد.

  3. لإنشاء البنية الأساسية لبرنامج ربط العمليات التجارية RunSSISPackagePipeline، قم بتشغيل الأمر cmdlet Set-AzDataFactoryV2Pipeline .

    $DFPipeLine = Set-AzDataFactoryV2Pipeline -DataFactoryName $DataFactory.DataFactoryName `
                                                   -ResourceGroupName $ResGrp.ResourceGroupName `
                                                   -Name "RunSSISPackagePipeline"
                                                   -DefinitionFile ".\RunSSISPackagePipeline.json"
    

    هذا هو نموذج الإخراج:

    PipelineName      : Adfv2QuickStartPipeline
    ResourceGroupName : <resourceGroupName>
    DataFactoryName   : <dataFactoryName>
    Activities        : {CopyFromBlobToBlob}
    Parameters        : {[inputPath, Microsoft.Azure.Management.DataFactory.Models.ParameterSpecification], [outputPath, Microsoft.Azure.Management.DataFactory.Models.ParameterSpecification]}
    

قم بتشغيل البنية الأساسية

استخدم الأمر cmdlet Invoke-AzDataFactoryV2Pipeline لتشغيل البنية الأساسية. يقوم الأمر cmdlet بإرجاع معرف تشغيل البنية الأساسية للمراقبة المستقبلية.

$RunId = Invoke-AzDataFactoryV2Pipeline -DataFactoryName $DataFactory.DataFactoryName `
                                             -ResourceGroupName $ResGrp.ResourceGroupName `
                                             -PipelineName $DFPipeLine.Name

مراقبة المسار

قم بتشغيل برنامج PowerShell النصي التالي للتحقق باستمرار من حالة تشغيل البنية الأساسية حتى تنتهي من نسخ البيانات. انسخ أو الصق البرنامج النصي التالي في نافذة PowerShell، وحدد إدخال.

while ($True) {
    $Run = Get-AzDataFactoryV2PipelineRun -ResourceGroupName $ResGrp.ResourceGroupName `
                                               -DataFactoryName $DataFactory.DataFactoryName `
                                               -PipelineRunId $RunId

    if ($Run) {
        if ($run.Status -ne 'InProgress') {
            Write-Output ("Pipeline run finished. The status is: " +  $Run.Status)
            $Run
            break
        }
        Write-Output  "Pipeline is running...status: InProgress"
    }

    Start-Sleep -Seconds 10
}   

يمكنك أيضاً مراقبة المسار باستخدام مدخل Azure. للحصول على إرشادات خطوة بخطوة، راجع مراقبة البنية الأساسية.

جدولة البنية الأساسية مع المشغل

في الخطوة السابقة، قمت بتشغيل المسار عند الطلب. يمكنك أيضاً إنشاء مشغل جدول لتشغيل المسار وفقاً لجدول، مثل كل ساعة أو يومياً.

  1. أنشئ ملف JSON باسم MyTrigger.json في C:\ADF\RunSSISPackage المجلد بالمحتوى التالي:

    {
        "properties": {
            "name": "MyTrigger",
            "type": "ScheduleTrigger",
            "typeProperties": {
                "recurrence": {
                    "frequency": "Hour",
                    "interval": 1,
                    "startTime": "2017-12-07T00:00:00-08:00",
                    "endTime": "2017-12-08T00:00:00-08:00"
                }
            },
            "pipelines": [{
                "pipelineReference": {
                    "type": "PipelineReference",
                    "referenceName": "RunSSISPackagePipeline"
                },
                "parameters": {}
            }]
        }
    }    
    
  2. في Azure PowerShell، قم بالتبديل إلى C:\ADF\RunSSISPackage المجلد.

  3. قم بتشغيل الأمر cmdlet Set-AzDataFactoryV2Trigger ، والذي يقوم بإنشاء المشغل.

    Set-AzDataFactoryV2Trigger -ResourceGroupName $ResGrp.ResourceGroupName `
                                    -DataFactoryName $DataFactory.DataFactoryName `
                                    -Name "MyTrigger" -DefinitionFile ".\MyTrigger.json"
    
  4. بشكل افتراضي، يكون المشغل في حالة توقف. ابدأ المشغل بتشغيل الأمر cmdlet Start-AzDataFactoryV2Trigger .

    Start-AzDataFactoryV2Trigger -ResourceGroupName $ResGrp.ResourceGroupName `
                                      -DataFactoryName $DataFactory.DataFactoryName `
                                      -Name "MyTrigger" 
    
  5. تأكد من بدء المشغل عن طريق تشغيل الأمر cmdlet Get-AzDataFactoryV2Trigger .

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName `
                                    -DataFactoryName $DataFactoryName `
                                    -Name "MyTrigger"     
    
  6. قم بتشغيل الأمر التالي بعد الساعة التالية. على سبيل المثال، إذا كان الوقت الحالي هو 3:25 مساءً بالتوقيت العالمي المنسق، فقم بتشغيل الأمر في الساعة 4 مساءً بالتوقيت العالمي المتفق عليه.

    Get-AzDataFactoryV2TriggerRun -ResourceGroupName $ResourceGroupName `
                                       -DataFactoryName $DataFactoryName `
                                       -TriggerName "MyTrigger" `
                                       -TriggerRunStartedAfter "2017-12-06" `
                                       -TriggerRunStartedBefore "2017-12-09"
    

    قم بتشغيل الاستعلام التالي مقابل قاعدة بيانات SSISDB في خادم SQL للتحقق من تنفيذ الحزمة.

    select * from catalog.executions