Exécuter un package SSIS avec PowerShell

S’applique à : SQL Server SSIS Integration Runtime dans Azure Data Factory

Ce guide de démarrage rapide montre comment utiliser un script PowerShell pour se connecter à un serveur de base de données et exécuter un package SSIS.

Prérequis

Un serveur Azure SQL Database écoute sur le port 1433. Si vous essayez de vous connecter à un serveur Azure SQL Database en étant derrière un pare-feu d’entreprise, ce port doit être ouvert dans le pare-feu d’entreprise pour que vous puissiez vous connecter.

Plateformes prises en charge

Vous pouvez utiliser les informations de ce guide de démarrage rapide pour exécuter un package SSIS sur les plateformes suivantes :

Vous ne pouvez pas utiliser les informations de ce guide de démarrage rapide pour exécuter un package SSIS sur Linux. Pour plus d’informations sur l’exécution de packages sur Linux, consultez Extraire, transformer et charger des données sur Linux avec SSIS.

Pour Azure SQL Database, obtenez les informations de connexion.

Pour exécuter le package sur Azure SQL Database, obtenez les informations de connexion dont vous avez besoin pour vous connecter à la base de données du catalogue SSIS (SSISDB). Vous avez besoin des informations de connexion et du nom de serveur complet dans les procédures qui suivent.

  1. Connectez-vous au portail Azure.
  2. Sélectionnez Bases de données SQL dans le menu de gauche, puis sélectionnez la base de données SSISDB dans la page Bases de données SQL.
  3. Dans la page Vue d’ensemble de votre base de données, notez le nom complet du serveur. Pour voir l’option Cliquer pour copier, pointez sur le nom du serveur.
  4. Si vous avez oublié vos informations de connexion au serveur Azure SQL Database, accédez à la page du serveur SQL Database pour voir le nom de l’administrateur du serveur. Vous pouvez réinitialiser le mot de passe si nécessaire.
  5. Cliquez sur Afficher les chaînes de connexion de la base de données.
  6. Examinez la chaîne de connexion ADO.NET complète.

Fournisseur PowerShell SSIS

Vous pouvez utiliser le fournisseur PowerShell de SSIS pour vous connecter à un catalogue SSIS et exécuter les packages qu’il contient.

Voici un exemple simple illustrant la méthode pour exécuter un package SSIS dans un catalogue de packages avec le fournisseur PowerShell de SSIS.

(Get-ChildItem SQLSERVER:\SSIS\localhost\Default\Catalogs\SSISDB\Folders\Project1Folder\Projects\'Integration Services Project1'\Packages\ |
WHERE { $_.Name -eq 'Package.dtsx' }).Execute("false", $null)

Script PowerShell

Entrez les valeurs appropriées pour les variables en haut du script suivant, puis exécutez le script pour exécuter le package SSIS.

Notes

L’exemple suivant utilise l’authentification Windows. Pour utiliser l’authentification SQL Server, remplacez l’argument Integrated Security=SSPI; par User ID=<user name>;Password=<password>;. Si vous vous connectez à un serveur Azure SQL Database, vous ne pouvez pas utiliser l’authentification Windows.

# Variables
$SSISNamespace = "Microsoft.SqlServer.Management.IntegrationServices"
$TargetServerName = "localhost"
$TargetFolderName = "Project1Folder"
$ProjectName = "Integration Services Project1"
$PackageName = "Package.dtsx"

# Load the IntegrationServices assembly
$loadStatus = [System.Reflection.Assembly]::Load("Microsoft.SQLServer.Management.IntegrationServices, "+
    "Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL")

# Create a connection to the server
$sqlConnectionString = `
    "Data Source=" + $TargetServerName + ";Initial Catalog=master;Integrated Security=SSPI;"
$sqlConnection = New-Object System.Data.SqlClient.SqlConnection $sqlConnectionString

# Create the Integration Services object
$integrationServices = New-Object $SSISNamespace".IntegrationServices" $sqlConnection

# Get the Integration Services catalog
$catalog = $integrationServices.Catalogs["SSISDB"]

# Get the folder
$folder = $catalog.Folders[$TargetFolderName]

# Get the project
$project = $folder.Projects[$ProjectName]

# Get the package
$package = $project.Packages[$PackageName]

Write-Host "Running " $PackageName "..."

$result = $package.Execute("false", $null)

Write-Host "Done."

Étapes suivantes