[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 :

  1. Créer un Credential pour mondomaine\moncompte :

 

USE msdb;

EXEC sp_add_proxy

    @proxy_name = 'SSIS_Proxy',

    @credential_name = 'SSIS_Credential',

    @enabled = 1;

  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.