Planifier l’exécution d’un package SSIS

Maintenant nous savons comment créer et paramétrer un package SSIS, il reste donc à planifier l’exécution d’un package SSIS.

Trois possibilités :

  • Créer un job SQL Server Agent manuellement
  • Créer un job SQL Server Agent avec PowerShell
  • Créer une tache planifiée qui exécute un script PowerShell exécutant le package SSIS.

Créer un job dans SQL Server Agent manuellement

Dans SQL Server Management Studio, déplier SQL Server Agent, clic droit sur Jobs et sélectionner New Job …


Nouveau Job SQL Server Agent

Dans la fenêtre New job, vous vous attarderez principalement sur les onglets

  • General pour spécifier le nom du job (SSIS – OdataSP) et le compte d’exécution
  • Steps pour sélectionner le job à exécuter et ses paramètres
  • Schedules pour configurer les exécutions
  • Notifications pour prévenir si quelque chose échoue.

L’onglet Steps permet d’ajouter des étapes. C’est là que vous renseigner que vous voulez exécuter un package SSIS depuis un serveur SQL spécifique et …


New Job Step – onglet Package

… que vous spécifiez quel environnement utiliser pour l’exécution.


New Job Step – onglet Configuration

Pour tester le job nouvellement créer, clic droit sur le job puis Start Job as Step…


Job créé

Créer un job SQL Server Agent avec PowerShell

Une fois n’est pas coutume, je vous fournis un lien vers un article d’un blog MSDN. L’article contient les versions C# et PowerShell du code pour créer un job SQL Server Agent qui exécutera un package SSIS : SSIS 2012 Automation – Part 3: Create SQL Agent Job which will execute SSIS package from SSIS catalog, Assign Environment Reference and Assign Schedule to Job

Créer une tache planifiée qui exécute un script PowerShell exécutant le package SSIS

Le script suivant permet d’exécuter un package SSIS en lui spécifiant un environnement.

# Variables
$ProjectName = "IntegrationServicesProject1"
$FolderName = "GLA_PS"
$EnvironmentName = "Env_PS"
$CatalogName = "SSISDB"
$PackageName = "ODataSP.dtsx"

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Management.IntegrationServices") | Out-Null;

$ISNamespace = "Microsoft.SqlServer.Management.IntegrationServices"

"Connecting to server ...";
$sqlConnectionString = "Data Source=vw-x-dxx-07;Initial Catalog=master;Integrated Security=SSPI"
$sqlConnection = New-Object System.Data.SqlClient.SqlConnection $sqlConnectionString
$integrationServices = New-Object $ISNamespace".IntegrationServices" $sqlConnection

"Getting catalog $catalogName ..."
$ssisCatalog = $integrationServices.Catalogs[$CatalogName]

"Getting Folder $FolderName ..."
$folder = $ssisCatalog.Folders[$FolderName]

"Getting project $ProjectName ..."
$project = $folder.Projects[$ProjectName]

"Getting package $PackageName ..."
$package = $project.Packages[$PackageName]

"Getting environment $EnvironmentName ..."
$environmentReference = $project.References.Item($EnvironmentName, $folder.Name)
$environmentReference.Refresh()

"Executing package $ProjectName\$PackageName with environment $EnvironmentName ..."
$package.Execute($false, $environmentReference)

"Done"

A ce stade le package est déployé et son exécution est programmée. Il reste à superviser les exécutions pour s’assurer que tout se passe comme prévu.