Partager via


Exécuter des packages SQL Server Integration Services avec l’utilitaire dtexec compatible Azure

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Conseil

Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !

Cet article décrit l’utilitaire d’invite de commandes dtexec (AzureDTExec) compatible Azure. Il permet d’exécuter des packages SQL Server Integration Services (SSIS) sur Azure-SSIS Integration Runtime (IR) dans Azure Data Factory.

L’utilitaire dtexec traditionnel est fourni avec SQL Server. Pour plus d'informations, consultez utilitaire dtexec. Il est souvent appelé par des orchestrateurs ou des planificateurs tiers, comme ActiveBatch et Control-M, pour exécuter localement des packages SSIS.

L’utilitaire AzureDTExec moderne est fourni avec un outil SQL Server Management Studio (SSMS). Il peut également être appelé par des orchestrateurs ou des planificateurs tiers pour exécuter des packages SSIS dans Azure. Cela facilite les opérations de soulèvement et de déplacement ou la migration de vos packages SSIS vers le cloud. Après la migration, si vous souhaitez continuer à utiliser des orchestrateurs ou des planificateurs tiers dans vos opérations quotidiennes, ils peuvent désormais appeler AzureDTExec au lieu de dtexec.

AzureDTExec exécute vos packages en tant qu’activités d’exécution de package SSIS dans des pipelines Data Factory. Pour plus d’informations, consultez Exécuter des packages SSIS en tant qu’activités Azure Data Factory.

AzureDTExec peut être configuré par le biais de SSMS pour utiliser une application Microsoft Entra qui génère des pipelines dans votre instance de fabrique de données. Il peut également être configuré pour accéder aux systèmes de fichiers, aux partages de fichiers ou à Azure Files, où vous stockez vos packages. En fonction des valeurs que vous attribuez à ses options d’appel, AzureDTExec génère et exécute un pipeline Data Factory unique comportant une activité Exécuter le package SSIS. L’appel d’AzureDTExec avec les mêmes valeurs pour ses options permet de réexécuter le pipeline existant.

Prérequis

Pour utiliser AzureDTExec, téléchargez et installez la dernière version de SSMS, à savoir la version 18.3 ou une version ultérieure. Téléchargez-la à partir de ce site web.

Configurez l’utilitaire AzureDTExec

L’installation de SSMS sur votre machine locale installe également AzureDTExec. Pour configurer ses paramètres, démarrez SSMS avec l’option Exécuter en tant qu’administrateur. Sélectionnez ensuite Outils>Migrer vers Azure>Configurer les DTExec compatibles Azure.

Configure Azure-enabled dtexec menu

Cette action ouvre une fenêtre AzureDTExecConfig qui doit être ouverte avec des privilèges d’administrateur pour que le fichier AzureDTExec.settings soit accessible en écriture. Si vous n’avez pas exécuté SSMS en tant qu’administrateur, une fenêtre de contrôle de compte d’utilisateur (UAC) s’ouvre. Entrez votre mot de passe d’administrateur pour élever vos privilèges.

Configure Azure-enabled dtexec settings

Dans la fenêtre AzureDTExecConfig, entrez vos paramètres de configuration comme suit :

  • ApplicationId : entrez l’identificateur unique de l’application Microsoft Entra que vous créez avec les autorisations appropriées pour générer des pipelines dans votre fabrique de données. Pour plus d’informations, consultez Créer une application Microsoft Entra et un principal de service Azure via le portail Microsoft Azure.
  • AuthenticationKey : entrez la clé d’authentification de votre application Microsoft Entra.
  • TenantId : entrez l’identificateur unique du locataire Microsoft Entra, sous lequel votre application Microsoft Entra est créée.
  • DataFactory : entrez le nom de la fabrique de données dans laquelle des pipelines uniques avec l’activité Exécuter le package SSIS sont générés en fonction des valeurs des options fournies lorsque vous appelez AzureDTExec.
  • IRName : entrez le nom d’Azure-SSIS IR dans votre fabrique de données, sur laquelle les packages spécifiés s’exécuteront dans leur chemin de convention d’affectation de noms (UNC) lorsque appellerez AzureDTExec.
  • PipelineNameHashStrLen : entrez la longueur des chaînes de hachage à générer à partir des valeurs d’options que vous fournissez lorsque vous appelez AzureDTExec. Les chaînes servent à former des noms uniques pour les pipelines Data Factory qui exécutent vos packages sur Azure-SSIS IR. Généralement, une longueur de 32 caractères est suffisante.
  • Groupe de ressources : entrez le nom du groupe de ressources Azure dans lequel votre fabrique de données a été créée.
  • SubscriptionId : entrez l’identificateur unique de l’abonnement Azure AD sous lequel votre fabrique de données Azure AD a été créée.
  • LogAccessDomain : entrez les informations d’identification de domaine pour accéder à votre dossier de journaux dans son chemin UNC lorsque vous écrivez des fichiers journaux, ce qui est requis quand LogPath est spécifié et que LogLevel n’est pas null.
  • LogAccessPassword : entrez les informations d’identification de mot de passe pour accéder à votre dossier de journaux dans son chemin UNC lorsque vous écrivez des fichiers journaux, ce qui est requis quand LogPath est spécifié et que LogLevel n’est pas null.
  • LogAccessUserName : entrez les informations d’identification de nom d’utilisateur pour accéder à votre dossier de journaux dans son chemin UNC lorsque vous écrivez des fichiers journaux, ce qui est requis quand LogPath est spécifié et que LogLevel n’est pas null.
  • LogLevel : entrez l’étendue sélectionnée de la journalisation à partir des options prédéfinies null, Basic, Verbose ou Performance pour vos exécutions de packages sur Azure-SSIS IR.
  • LogPath : entrez le chemin UNC du dossier de journaux dans lequel les fichiers journaux de vos exécutions de packages sur Azure-SSIS IR sont écrits.
  • PackageAccessDomain : entrez les informations d’identification de domaine pour accéder à vos packages dans leur chemin UNC spécifié lorsque vous appelez AzureDTExec.
  • PackageAccessPassword : entrez les informations d’identification de mot de passe pour accéder à vos packages dans leur chemin UNC spécifié lorsque vous appelez AzureDTExec.
  • PackageAccessUserName : entrez les informations d’identification de nom d'utilisateur pour accéder à vos packages dans leur chemin UNC spécifié lorsque vous appelez AzureDTExec.

Pour stocker vos packages et vos fichiers journaux dans des systèmes de fichiers ou des partages de fichiers locaux, vous devez joindre votre runtime d’intégration Azure-SSIS à un réseau virtuel connecté à votre réseau local, afin qu’il puisse récupérer vos packages et d’écrire vos fichiers journaux. Pour plus d’informations, consultez Joindre un runtime d’intégration Azure-SSIS à un réseau virtuel.

Pour éviter de montrer des valeurs sensibles écrites dans le fichier AzureDTExec.settings en texte brut, nous les encodons dans des chaînes de codage Base64. Quand vous appelez AzureDTExec, toutes les chaînes codées en Base64 sont décodées dans leurs valeurs d’origine. Vous pouvez sécuriser davantage le fichier AzureDTExec.settings en limitant les comptes qui peuvent y accéder.

Appeler l’utilitaire AzureDTExec

Vous pouvez appeler AzureDTExec depuis l’invite de ligne de commande et fournir les valeurs appropriées pour les options concernant votre scénario de cas d’usage.

L’utilitaire est installé sur {SSMS Folder}\Common7\IDE\CommonExtensions\Microsoft\SSIS\150\Binn. Vous pouvez ajouter son chemin d’accès à la variable d’environnement « PATH »pour qu’elle puisse être appelée depuis n’importe quel endroit.

> cd "C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Microsoft\SSIS\150\Binn"
> AzureDTExec.exe  ^
  /F \\MyStorageAccount.file.core.windows.net\MyFileShare\MyPackage.dtsx  ^
  /Conf \\MyStorageAccount.file.core.windows.net\MyFileShare\MyConfig.dtsConfig  ^
  /Conn "MyConnectionManager;Data Source=MyDatabaseServer.database.windows.net;User ID=MyAdminUsername;Password=MyAdminPassword;Initial Catalog=MyDatabase"  ^
  /Set \package.variables[MyVariable].Value;MyValue  ^
  /De MyEncryptionPassword

L’appel d’AzureDTExec offre des options similaires à celles de l’appel de dtexec. Pour plus d'informations, consultez Utilitaire dtexec. Voici les options prises en charge :

  • /F[ile] : charge un package qui est stocké dans le système de fichiers, le partage de fichiers ou Azure Files. Comme valeur pour cette option, vous pouvez spécifier le chemin UNC de votre fichier de package dans le système de fichiers, de partage de fichiers ou Azure Files avec son extension .dtsx. Si le chemin UNC spécifié contient des espaces, mettez tout le chemin entre guillemets.
  • /Conf[igFile] : spécifie un fichier de configuration à partir duquel extraire des valeurs. À l’aide de cette option, vous pouvez définir une configuration d’exécution pour votre package qui diffère de celle spécifiée au moment de la conception. Vous pouvez stocker différents paramètres dans un fichier de configuration XML, puis les charger avant l’exécution de votre package. Pour plus d’informations, consultez Configurations de package SSIS. Pour spécifier la valeur de cette option, utilisez le chemin UNC de votre fichier de configuration dans le système de fichiers, le partage de fichiers ou Azure Files avec son extension dtsConfig. Si le chemin UNC spécifié contient des espaces, mettez tout le chemin entre guillemets.
  • /Conn[ection] : spécifie les chaînes de connexion des gestionnaires de connexions existants dans votre package. À l’aide de cette option, vous pouvez définir des chaînes de connexion d’exécution pour les gestionnaires de connexions existants dans votre package qui diffèrent de celles spécifiées au moment de la conception. Spécifiez la valeur de cette option comme suit : connection_manager_name_or_id;connection_string [[;connection_manager_name_or_id;connection_string]...].
  • /Set : remplace la configuration d’un paramètre, d’une variable, d’une propriété, d’un conteneur, d’un module fournisseur d’informations, d’un énumérateur Foreach ou d’une connexion dans votre package. Cette option peut être spécifiée plusieurs fois. Spécifiez la valeur de cette option comme suit : property_path;value. Par exemple, \package.variables[counter].Value;1 remplace la valeur de la variable counter par 1. Vous pouvez utiliser l’Assistant Configuration de package pour rechercher, copier et coller la valeur de property_path pour les éléments de votre package dont vous souhaitez remplacer la valeur. Pour plus d’informations, consultez Configurations de package SSIS.
  • /De[crypt] : définit le mot de passe de déchiffrement de votre package configuré avec le niveau de protection EncryptAllWithPassword/EncryptSensitiveWithPassword.

Notes

L’appel d’AzureDTExec avec de nouvelles valeurs pour ses options génère un nouveau pipeline, à l’exception de l’option /De[cript] .

Une fois que les pipelines uniques contenant l'activité Exécuter le package SSIS ont été générés et exécutés suite à l'appel d'AzureDTExec, ils peuvent être analysés sur le portail Data Factory. Vous pouvez également leur attribuer des déclencheurs Data Factory si vous souhaitez les orchestrer/planifier à l'aide de Data Factory. Pour plus d’informations, consultez Exécuter des packages SSIS en tant qu’activités Data Factory.

Avertissement

Le pipeline généré est censé être utilisé uniquement par AzureDTExec. Comme ses propriétés ou ses paramètres peuvent changer dans le futur, il ne faut ni les modifier ni les réutiliser à d’autres fins. Les modifications peuvent arrêter AzureDTExec. Dans ce cas, supprimez le pipeline. AzureDTExec génère un nouveau pipeline la prochaine fois qu’il est appelé.