[SQL Server] Exécuter un package SSIS : différentes méthodes
Pour exécuter un package ssis je passe par dtexec.exec.
Pour exécuter un package SSIS avec un compte utilisateur spécifique (mondomaine\moncompte), on peut utiliser dtexec.exe avec l’option runas ou en configurant l’exécution avec EXECUTE AS.
Méthode 1 : Utiliser runas avec dtexec.exe
Pour exécuter le package SSIS sous un compte spécifique, utiliser commande runas :
runas /user:mondomaine\moncompte "dtexec /F \"C:\Chemin\Du\Package.dtsx\""
- Une fenêtre vous demandera le mot de passe de mondomaine\moncompte.
- /F permet de spécifier le fichier .dtsx.
Si on exécute le package SSIS depuis un SQL Server Agent Job, il faut assurer que le compte dispose des permissions nécessaires sur SQL Server et SSIS.
Méthode 2 : Exécuter le package depuis SQL Server avec EXECUTE AS
Si le package est stocké dans SSISDB, on peut utiliser EXECUTE AS avant d’appeler catalog.start_package :
EXECUTE AS LOGIN = 'mondomaine\moncompte';
EXEC [SSISDB].[catalog].[start_package]
@folder_name = 'MonDossier',
@project_name = 'MonProjet',
@package_name = 'MonPackage.dtsx',
@reference_id = NULL,
@use32bitruntime = FALSE,
@synchronized = 1;
REVERT;
- EXECUTE AS LOGIN = 'mondomaine\moncompte' permet d'exécuter sous un compte spécifique.
- REVERT rétablit le contexte d’exécution original.
Méthode 3 : Configurer un proxy SQL Server Agent
Si on utilise SQL Server Agent pour exécuter le package, on peut :
- Créer un Credential pour mondomaine\moncompte :
USE msdb;
EXEC sp_add_proxy
@proxy_name = 'SSIS_Proxy',
@credential_name = 'SSIS_Credential',
@enabled = 1;
- Créer un Job qui exécute dtexec.exe avec ce proxy.
Cela permet d’automatiser l’exécution sans besoin d'entrer le mot de passe à chaque fois.