SSIS-csomag futtatása az SSIS-csomag végrehajtása tevékenységgel az Azure Data Factoryben a PowerShell használatával
A következőkre vonatkozik: Azure Data Factory Azure Synapse Analytics
Tipp.
Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!
Ez a cikk azt ismerteti, hogyan futtathat SQL Server Integration Services-csomagokat (SSIS- csomagokat) egy Azure Data Factory-folyamatban a PowerShell és az SSIS-csomag végrehajtása tevékenység használatával.
Előfeltételek
Feljegyzés
Javasoljuk, hogy az Azure Az PowerShell modult használja az Azure-ral való interakcióhoz. Első lépésként tekintse meg az Azure PowerShell telepítését ismertető témakört. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.
Hozzon létre egy Azure-SSIS integrációs modult (IR), ha még nem rendelkezik ilyen modullal az Azure-SSIS integrációs modul kiépítése című oktatóanyag részletes utasításait követve.
Adat-előállító létrehozása az Azure-SSIS integrációs modullal
Használhat egy meglévő adat-előállítót, amely már kiépítette az Azure-SSIS integrációs modult, vagy létrehozhat egy új adat-előállítót az Azure-SSIS integrációs modullal. Kövesse az oktatóanyag részletes utasításait: SSIS-csomagok üzembe helyezése az Azure-ban a PowerShell használatával.
Folyamat létrehozása SSIS-csomag végrehajtása tevékenységgel
Ebben a lépésben létrehoz egy folyamatot egy SSIS-csomag végrehajtása tevékenységgel. A tevékenység futtatja az SSIS-csomagot.
Hozzon létre egy JSON-fájlt
RunSSISPackagePipeline.json
a mappában azC:\ADF\RunSSISPackage
alábbi példához hasonló tartalommal.Fontos
A fájl mentése előtt cserélje le az objektumneveket, leírásokat és elérési utakat, tulajdonság- vagy paraméterértékeket, jelszavakat és más változóértékeket.
{ "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 } }] } }
A fájlrendszerben/Azure Filesban tárolt csomagok végrehajtásához adja meg a csomag és a napló helytulajdonságainak értékeit az alábbiak szerint:
{ { { { "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" } } } } } } } }
A fájlrendszerben/Azure Filesban tárolt projekteken belüli csomagok végrehajtásához adja meg a csomaghely tulajdonságainak értékeit az alábbiak szerint:
{ { { { "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" } } } } } } } }
Beágyazott csomagok végrehajtásához adja meg a csomag helytulajdonságainak értékeit az alábbiak szerint:
{ { { { "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" } } } } } }
A csomagtárolókban tárolt csomagok végrehajtásához adja meg a csomag és a konfiguráció helyének tulajdonságait az alábbiak szerint:
{ { { { "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" } } } } } } } }
Az Azure PowerShellben váltson a
C:\ADF\RunSSISPackage
mappára.A RunSSISPackagePipeline folyamat létrehozásához futtassa a Set-AzDataFactoryV2Pipeline parancsmagot.
$DFPipeLine = Set-AzDataFactoryV2Pipeline -DataFactoryName $DataFactory.DataFactoryName ` -ResourceGroupName $ResGrp.ResourceGroupName ` -Name "RunSSISPackagePipeline" -DefinitionFile ".\RunSSISPackagePipeline.json"
A mintakimenet a következő:
PipelineName : Adfv2QuickStartPipeline ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Activities : {CopyFromBlobToBlob} Parameters : {[inputPath, Microsoft.Azure.Management.DataFactory.Models.ParameterSpecification], [outputPath, Microsoft.Azure.Management.DataFactory.Models.ParameterSpecification]}
A folyamat futtatása
A folyamat futtatásához használja az Invoke-AzDataFactoryV2Pipeline parancsmagot. A parancsmag visszaadja a folyamat futásának azonosítóját a későbbi monitorozás céljából.
$RunId = Invoke-AzDataFactoryV2Pipeline -DataFactoryName $DataFactory.DataFactoryName `
-ResourceGroupName $ResGrp.ResourceGroupName `
-PipelineName $DFPipeLine.Name
A folyamat monitorozása
A folyamat futási állapotának folyamatos, az adatok másolásának befejezéséig tartó ellenőrzéséhez futtassa az alábbi PowerShell-szkriptet. Másolja vagy illessze be a következő szkriptet a PowerShell-ablakban, és válassza az Enter lehetőséget.
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
}
A folyamatot az Azure Portalon is figyelheti. Részletes útmutatásért tekintse meg a folyamat figyelése című témakört.
A folyamat ütemezése eseményindítóval
Az előző lépésben igény szerint futtatta a folyamatot. Ütemezési eseményindítót is létrehozhat a folyamat ütemezés szerinti futtatásához, például óránként vagy naponta.
Hozzon létre egy JSON-fájlt
MyTrigger.json
a mappában aC:\ADF\RunSSISPackage
következő tartalommal:{ "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": {} }] } }
Az Azure PowerShellben váltson a
C:\ADF\RunSSISPackage
mappára.Futtassa a Set-AzDataFactoryV2Trigger parancsmagot, amely létrehozza az eseményindítót.
Set-AzDataFactoryV2Trigger -ResourceGroupName $ResGrp.ResourceGroupName ` -DataFactoryName $DataFactory.DataFactoryName ` -Name "MyTrigger" -DefinitionFile ".\MyTrigger.json"
Alapértelmezés szerint az eseményindító leállt állapotban van. Indítsa el az eseményindítót a Start-AzDataFactoryV2Trigger parancsmag futtatásával.
Start-AzDataFactoryV2Trigger -ResourceGroupName $ResGrp.ResourceGroupName ` -DataFactoryName $DataFactory.DataFactoryName ` -Name "MyTrigger"
Győződjön meg arról, hogy az eseményindító a Get-AzDataFactoryV2Trigger parancsmag futtatásával indul el.
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName ` -DataFactoryName $DataFactoryName ` -Name "MyTrigger"
Futtassa a következő parancsot a következő óra után. Ha például az aktuális idő 15:25 (UTC) lesz, futtassa a parancsot 16:00 (UTC) időpontban.
Get-AzDataFactoryV2TriggerRun -ResourceGroupName $ResourceGroupName ` -DataFactoryName $DataFactoryName ` -TriggerName "MyTrigger" ` -TriggerRunStartedAfter "2017-12-06" ` -TriggerRunStartedBefore "2017-12-09"
Futtassa a következő lekérdezést az SQL Server SSISDB-adatbázisán a csomag végrehajtásának ellenőrzéséhez.
select * from catalog.executions