Een SSIS-pakket uitvoeren met de activiteit SSIS-pakket uitvoeren in Azure Data Factory met PowerShell
VAN TOEPASSING OP: Azure Data Factory
Azure Synapse Analytics
Tip
Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .
In dit artikel wordt beschreven hoe u een SSIS-pakket (SQL Server Integration Services) uitvoert in een Azure Data Factory-pijplijn met behulp van PowerShell en de activiteit SSIS-pakket uitvoeren.
Vereisten
Notitie
Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.
Maak een Azure-SSIS Integration Runtime (IR) als u er nog geen hebt door de stapsgewijze instructies in de zelfstudie te volgen: Azure-SSIS IR inrichten.
Een data factory maken met Azure-SSIS IR
U kunt een bestaande data factory gebruiken waarop Azure-SSIS IR al is ingericht of een nieuwe data factory maken met Azure-SSIS IR. Volg de stapsgewijze instructies in de zelfstudie: SSIS-pakketten implementeren in Azure via PowerShell.
Een pijplijn maken met een activiteit SSIS-pakket uitvoeren
In deze stap maakt u een pijplijn met een SSIS-pakketactiviteit uitvoeren. Met de activiteit wordt uw SSIS-pakket uitgevoerd.
Maak een JSON-bestand met de naam
RunSSISPackagePipeline.json
in deC:\ADF\RunSSISPackage
map met inhoud die vergelijkbaar is met het volgende voorbeeld.Belangrijk
Vervang objectnamen, beschrijvingen en paden, eigenschaps- of parameterwaarden, wachtwoorden en andere variabelewaarden voordat u het bestand opslaat.
{ "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 } }] } }
Als u pakketten wilt uitvoeren die zijn opgeslagen in het bestandssysteem/Azure Files, voert u de waarden voor de eigenschappen van uw pakket- en logboeklocatie als volgt in:
{ { { { "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" } } } } } } } }
Als u pakketten wilt uitvoeren binnen projecten die zijn opgeslagen in bestandssysteem/Azure Files, voert u de waarden voor de eigenschappen van uw pakketlocatie als volgt in:
{ { { { "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" } } } } } } } }
Als u ingesloten pakketten wilt uitvoeren, voert u de waarden voor de eigenschappen van uw pakketlocatie als volgt in:
{ { { { "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" } } } } } }
Als u pakketten wilt uitvoeren die zijn opgeslagen in pakketarchieven, voert u de waarden voor de eigenschappen van uw pakket- en configuratielocatie als volgt in:
{ { { { "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" } } } } } } } }
Ga in Azure PowerShell naar de
C:\ADF\RunSSISPackage
map.Als u de pijplijn RunSSISPackagePipeline wilt maken, voert u de cmdlet Set-AzDataFactoryV2Pipeline uit.
$DFPipeLine = Set-AzDataFactoryV2Pipeline -DataFactoryName $DataFactory.DataFactoryName ` -ResourceGroupName $ResGrp.ResourceGroupName ` -Name "RunSSISPackagePipeline" -DefinitionFile ".\RunSSISPackagePipeline.json"
Dit is de voorbeelduitvoer:
PipelineName : Adfv2QuickStartPipeline ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Activities : {CopyFromBlobToBlob} Parameters : {[inputPath, Microsoft.Azure.Management.DataFactory.Models.ParameterSpecification], [outputPath, Microsoft.Azure.Management.DataFactory.Models.ParameterSpecification]}
De pijplijn uitvoeren
Gebruik de cmdlet Invoke-AzDataFactoryV2Pipeline om de pijplijn uit te voeren. De cmdlet retourneert de id voor de pijplijnuitvoering voor toekomstige controle.
$RunId = Invoke-AzDataFactoryV2Pipeline -DataFactoryName $DataFactory.DataFactoryName `
-ResourceGroupName $ResGrp.ResourceGroupName `
-PipelineName $DFPipeLine.Name
De pijplijn bewaken
Voer het volgende PowerShell-script uit om continu de status van de pijplijnuitvoering te controleren totdat het kopiëren van de gegevens is voltooid. Kopieer of plak het volgende script in het PowerShell-venster en selecteer Enter.
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
}
U kunt de pijplijn ook bewaken met behulp van Azure Portal. Zie De pijplijn bewaken voor stapsgewijze instructies.
De pijplijn plannen met een trigger
In de vorige stap hebt u de pijplijn op aanvraag uitgevoerd. U kunt ook een schematrigger maken om de pijplijn volgens een schema uit te voeren, zoals elk uur of dagelijks.
Maak een JSON-bestand met de naam
MyTrigger.json
in deC:\ADF\RunSSISPackage
map met de volgende inhoud:{ "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": {} }] } }
Ga in Azure PowerShell naar de
C:\ADF\RunSSISPackage
map.Voer de cmdlet Set-AzDataFactoryV2Trigger uit, waarmee de trigger wordt gemaakt.
Set-AzDataFactoryV2Trigger -ResourceGroupName $ResGrp.ResourceGroupName ` -DataFactoryName $DataFactory.DataFactoryName ` -Name "MyTrigger" -DefinitionFile ".\MyTrigger.json"
De trigger heeft standaard de status Gestopt. Start de trigger door de cmdlet Start-AzDataFactoryV2Trigger uit te voeren.
Start-AzDataFactoryV2Trigger -ResourceGroupName $ResGrp.ResourceGroupName ` -DataFactoryName $DataFactory.DataFactoryName ` -Name "MyTrigger"
Controleer of de trigger is gestart door de cmdlet Get-AzDataFactoryV2Trigger uit te voeren.
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName ` -DataFactoryName $DataFactoryName ` -Name "MyTrigger"
Voer de volgende opdracht uit na het volgende uur. Als de huidige tijd bijvoorbeeld 15:25 UUR UTC is, voert u de opdracht uit om 14:00 UUR UTC.
Get-AzDataFactoryV2TriggerRun -ResourceGroupName $ResourceGroupName ` -DataFactoryName $DataFactoryName ` -TriggerName "MyTrigger" ` -TriggerRunStartedAfter "2017-12-06" ` -TriggerRunStartedBefore "2017-12-09"
Voer de volgende query uit op de SSISDB-database in uw SQL-server om te controleren of het pakket is uitgevoerd.
select * from catalog.executions