Exécuter un package SSIS en ligne de commande avec DTExec

Tutoriel pour exécuter un package SSIS en ligne de commande avec l’utilitaire DTExec.

L’outil SSIS DTEXEC permet de lancer des commandes batch en ligne de commande pour gérer les packages. En effet, la suite Microsoft SQL Server inclut l’exécutable DTExec.exe. C’est un outil de Scripting pour commander et paramétrer les packages SSIS. Il est possible de lancer l’utilitaire d’exécution des packages à partir d’une invite de commande, ou encore à partir d’un fichier batch, c’est à dire avec l’extension .bat.

Exécuter un package SSIS en ligne de commande

Pour commencer, ouvrir une invite de commande MS-DOS en passant par le menu Démarrer sous Windows. Puis cliquer sur Invite de commandes. Ou encore en tapant cmd dans la barre de recherche Windows. Soit un package SSIS simple qui se trouve dans ce dossier:

  • C:\ssis\Package.dtsx

Il n’est pas nécessaire d’exécuter l’utilitaire dtexec.exe à partir du dossier où se trouve le package SSIS. Mais il faut fournir le chemin exact et absolu jusqu’au fichier DTSX. Ou encore le chemin relatif depuis le dossier où se trouve la commande.

1. Exécuter un package SSIS stocké dans un dossier Windows

Par exemple, taper cette commande pour exécuter un package. Cet exemple exécute le package avec les paramètres par défaut, c’est à dire qu’il utilise le fichier de configuration (avec une extension dtsconfig) par défaut.

DTEXEC /FILE "C:\ssis\Package.dtsx"
Exécuter un package SSIS en ligne de commande avec DTExec et erreur 0xC001700A
Exécuter un package SSIS en ligne de commande avec DTExec et erreur 0xC001700A

Les codes d’erreurs SSIS suivants s’affiche alors peut-être:

Code: 0xC001700A
Source: Package
Description: The version number in the package is not valid. The version number cannot be greater than current version number.
Code: 0xC0016020
Source: Package
Description: Package migration from version 8 to version 6 failed with error 0xC001700A « The version number in the package is not valid. The version number cannot be greater than current version number. ».

2. Erreur SSIS 0xC001700A de version incorrecte avec DTEXEC

En fonction de la configuration du PC, du serveur SQL Server, de l’environnement de développement, il est possible que de multiples versions de l’éxécutable et du moteur de base de données cohabitent. La solution pour corriger le code d’erreur SSIS 0xC001700A est de modifier la version SQL Server utilisée. Pour corriger le code d’erreur, vérifier donc les versions et les niveaux de compatibilité des trois éléments suivants:

  1. L’utilitaire DTExec.exe.
  2. Le moteur de base de données SQL Server.
  3. Le niveau de compatibilité du projet SSIS.

2.1 Vérifier la version de DTExec

Depuis l’invite de commande, taper DTExec pour afficher le numéro de la version détaillée de l’utilitaire SSIS.

DTExec
Vérifier la version de l'utilitaire DTExec pour exécuter un package SSIS en ligne de commande
Vérifier la version de l’utilitaire DTExec pour exécuter un package SSIS en ligne de commande

Microsoft (R) SQL Server Execute Package Utility
Version 11.0.7001.0 for 32-bit

C’est donc la version 11.0.7001.0 de l’utilitaire DTExec qui est utilisée. Soit une version correspondant à SQL Server 2012, d’après la liste des versions SQL Server et des mises à jours disponibles sur le site officiel.

2.2 Vérifier la version SQL Server utilisée

Cette vérification n’est pas obligatoire, mais il est recommandé de maintenir tous les blocs à niveau. Pour cela, se connecter à la base avec SSMS et exécuter cette requête pour vérifier la version exacte et détaillée du moteur SQL Server utilisée.

select @@version as [SQL_Version];

C’est la version Microsoft SQL Server 2019 (RTM-GDR) 15.0.2095.3 qui est installée.

Vérifier la version d'une instance de base de données SQL Server depuis SSMS
Vérifier la version d’une instance de base de données SQL Server depuis SSMS

2.3 Vérifier le niveau de compatibilité du package SSIS à exécuter

Vérifier ou modifier maintenant le niveau de compatibilité du package SSIS à exécuter avec DTExec. Depuis Visual Studio, ouvrir le projet contenant le package à exécuter.

  1. Faire un clic-droit sur le projet SSIS
  2. Afficher les Propriétés du projet.
Afficher les propriétés d'un projet SSIS depuis Visual Studio.
Afficher les propriétés d’un projet SSIS depuis Visual Studio.

Vérifier ou modifier ensuite la propriété TargetServerVersion, qui est le niveau de compatibilité cible du projet SSIS en cours de développement. Avec une compatibilité ascendante mais non descendante, il n’est pas possible d’exécuter un package SQL Server 2019 avec la version SQL Server 2012 de DTExec. L’inverse en revanche serait possible.

  • Depuis les Pages des propriétés du projet.
  • Dans l’onglet Configuration et la section Général, vérifier ou modifier la version cible : SQL Server 2019.
Modifier le niveau de compatibilité d'un projet SSIS avec TargetServerVersion
Modifier le niveau de compatibilité d’un projet SSIS avec TargetServerVersion

Après avoir éventuellement changer de version, déployer à nouveau le package dans le dossier source avant de l’exécuter.

2.4 Modifier la variable d’environnement PATH

Pour changer la version du logiciel DT Exec appelée depuis MS-DOS, afficher la variable PATH depuis une ligne de commande.

path

Voici les chemins trouvés dans la variable d’environnement PATH, affichés en ligne avec Notepad++.

La variable d'environnement path et chemins SQL Server pour exécuter un package SSIS en ligne de commande
La variable d’environnement path et chemins SQL Server pour exécuter un package SSIS en ligne de commande
  • Chemins avec les versions MS SQL en 32-bit
    • C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\; – SQL Server 2012 (chemin actif)
    • C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\; – SQL Server 2014
    • C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\; – SQL Server 2016
    • C:\Program Files (x86)\Microsoft SQL Server\140\DTS\Binn\; – SQL Server 2017
    • C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\; – SQL Server 2019 (chemin à utiliser)
    • C:\Program Files (x86)\Microsoft SQL Server\160\DTS\Binn\; – SQL Server 2022
  • Chemins avec les versions MS SQL en 64-bit
    • C:\Program Files\Microsoft SQL Server\150\DTS\Binn\; – SQL Server 2019

Adapter la version DTExec à la compatibilité du package

Il suffit de déplacer le chemin vers le dossier SQL Server 2019 en 64 bits avant les autres chemins pour qu’il soit sélectionner par défaut. Pour cela, suivre ces étapes réalisées avec Windows 10 :

  1. Ouvrir les paramètre Windows avec le raccourci Windows + I
  2. Dans la barre de recherche, entrer variables
  3. Depuis la liste des résultats, sélectionner Editer les variables d’environnement systèmes
  4. Sélectionner alors Variables d’Environnement.
Propriétés systèmes avec Windows 10
Propriétés systèmes avec Windows 10

Pour modifier le contenu de la variable d’environnement, depuis cette fenêtre, effectuer ces actions:

  1. Sélectionner la variable Path
  2. Choisir l’option Editer
Editer les variables systèmes depuis le menu Windows
Editer les variables systèmes depuis le menu Windows

Changer alors l’ordre des exécutables dans la liste. En effet, pour un exécutable donné avec le même nom, Windows utilise le premier de la liste, triée par défaut par ordre alphabétique.

  1. Sélectionner la version la plus récente depuis le dossier en 32-bit, soit C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;
  2. Monter la valeur dans la liste avec l’option Move Up, jusqu’à être le premier des chemins relatifs à SQL Server.

Redémarrer le PC pour prendre en compte les modifications par le système d’exploitation.

Modifier l'ordre des exécutables SQL Server dans la variable d'environnement Path
Modifier l’ordre des exécutables SQL Server dans la variable d’environnement Path

3. Exécuter le package SSIS après la correction

Après avoir redémarrer le PC, taper à nouveau la commande DTExec depuis une invite de commande DOS pour vérifier la nouvelle version de DTExec. La fenêtre affiche maintenant 15.0.2000.5.

Version de l'utilitaire cmd pour exécuter un package SSIS en ligne de commande
Version de l’utilitaire cmd pour exécuter un package SSIS en ligne de commande

Exécuter enfin à nouveau le package pour vérifier le bon fonctionnement, avec la même commande.

DTEXEC /FILE "C:\ssis\Package.dtsx"
Exécuter le package SSIS Package.dtsx en ligne de commande avec DTExec avec succès
Exécuter le package SSIS Package.dtsx en ligne de commande avec DTExec avec succès

4. Afficher les options SSIS en ligne de commande avec DTEXEC

Enfin, pour voir la liste complète des options de ligne de commande pour le type dtexec. Afficher l’aide de la commande DTEXEC en tapant ce script depuis une ligne de commande MS-DOS:

DTEXEC /?
Liste de toutes les options DTEXEC pour exécuter un package SSIS en ligne de commande
Liste de toutes les options DTEXEC pour exécuter un package SSIS en ligne de commande

Conclusion sur l’exécution de packages SSIS avec DTExec

Enfin, pour obtenir plus de détails, la documentation officielle de l’utilitaire dtexec est disponible. Il est possible de gérer d’autres aspects de la suite Microsoft BI avec des scripts. Comme déployer des cubes SSAS avec du code XMLA, ou encore déployer des rapports SSRS avec MS-DOS.

Voici cette fois comment déployer un package SSIS depuis une ligne de commande DOS.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*