Déployer et exécuter des packages SSIS à l'aide de procédures stockées
Lorsque vous configurez un projet Integration Services afin d'utiliser le modèle de déploiement de projet, vous pouvez utiliser les procédures stockées du catalogue SSIS pour déployer le projet et pour exécuter des packages. Pour plus d'informations sur les modèles de déploiement de projet, consultez Déploiement de projets et de packages.
Vous pouvez également utiliser SQL Server Management Studio ou Outils de données SQL Server (SSDT) pour déployer le projet et pour exécuter des packages. Pour plus d'informations, consultez les rubriques de la section Voir aussi.
Conseil |
---|
Vous pouvez facilement créer des instructions Transact-SQL pour les procédures stockées répertoriées dans la procédure ci-dessous, à l'exception de catalog.deploy_project, en procédant comme suit :
|
Pour déployer et exécuter un package à l'aide de procédures stockées
Appelez catalog.deploy_project (base de données SSISDB) pour déployer le projet Integration Services qui contient le package sur le serveur Integration Services.
Pour récupérer les contenus binaires du fichier de déploiement de projet Integration Services, pour le paramètre @project\_stream, utilisez une instruction SELECT avec la fonction OPENROWSET et le fournisseur d'ensembles de lignes BULK. Le fournisseur d'ensembles de lignes BULK vous permet de lire des données dans un fichier. L'argument SINGLE_BLOB du fournisseur d'ensembles de lignes BULK retourne le contenu du fichier de données sous la forme d'un ensemble de lignes à une seule ligne, une seule colonne de type varbinary (max). Pour plus d'informations, consultez OPENROWSET (Transact-SQL).
Dans l'exemple suivant, le projet SSISPackages_ProjectDeployment est déployé dans le dossier SSIS Packages sur le serveur Integration Services. Les données binaires sont lues à partir du fichier projet (SSISPackage_ProjectDeployment.ispac) et sont stockées dans le paramètre @ProjectBinary de type varbinary (max). La valeur du paramètre @ProjectBinary est attribuée au paramètre @project\_stream.
DECLARE @ProjectBinary as varbinary(max) DECLARE @operation_id as bigint Set @ProjectBinary = (SELECT * FROM OPENROWSET(BULK 'C:\MyProjects\ SSISPackage_ProjectDeployment.ispac', SINGLE_BLOB) as BinaryData) Exec catalog.deploy_project @folder_name = 'SSIS Packages', @project_name = 'DeployViaStoredProc_SSIS', @Project_Stream = @ProjectBinary, @operation_id = @operation_id out
Appelez catalog.create_execution (base de données SSISDB) pour créer une instance d'exécution du package, et appelez éventuellement catalog.set_execution_parameter_value (base de données SSISDB) pour définir les valeurs de paramètre d'exécution.
Dans l'exemple suivant, catalog.create_execution crée une instance d'exécution pour le fichier package.dtsx contenu dans le projet SSISPackage_ProjectDeployment. Le projet se trouve dans le dossier SSIS Packages. L'execution_id retourné par la procédure stockée est utilisé dans l'appel à catalog.set_execution_parameter_value. Cette deuxième procédure stockée attribue au paramètre LOGGING_LEVEL la valeur 3 (journalisation verbose) et attribue à un paramètre de package nommé Parameter1 la valeur 1.
Pour les paramètres tels que LOGGING_LEVEL la valeur d'object_type est 50. Pour les paramètres de package la valeur d'object_type est 30.
Declare @execution_id bigint EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Package.dtsx', @execution_id=@execution_id OUTPUT, @folder_name=N'SSIS Packages', @project_name=N'SSISPackage_ProjectDeployment', @use32bitruntime=False, @reference_id=1 Select @execution_id DECLARE @var0 smallint = 3 EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @parameter_value=@var0 DECLARE @var1 int = 1 EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=30, @parameter_name=N'Parameter1', @parameter_value=@var1 GO
Appelez catalog.start_execution (base de données SSISDB) pour exécuter le package.
Dans l'exemple suivant, un appel à catalog.start_execution est ajouté à Transact-SQL pour démarrer l'exécution du package. L'execution_id retourné par la procédure stockée catalog.create_execution est utilisé.
Declare @execution_id bigint EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Package.dtsx', @execution_id=@execution_id OUTPUT, @folder_name=N'SSIS Packages', @project_name=N'SSISPackage_ProjectDeployment', @use32bitruntime=False, @reference_id=1 Select @execution_id DECLARE @var0 smallint = 3 EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @parameter_value=@var0 DECLARE @var1 int = 1 EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=30, @parameter_name=N'Parameter1', @parameter_value=@var1 EXEC [SSISDB].[catalog].[start_execution] @execution_id GO
Pour déployer un projet de serveur à serveur à l'aide de procédures stockées
Vous pouvez déployer un projet de serveur à serveur à l'aide des procédures stockées catalog.get_project (base de données SSISDB) et catalog.deploy_project (base de données SSISDB).
Vous devez effectuer les opérations suivantes avant d'exécuter les procédures stockées.
Créez un objet serveur lié. Pour plus d'informations, consultez Créer des serveurs liés (moteur de base de données SQL Server).
Dans la page Options du serveur de la boîte de dialogue Propriétés du serveur lié, attribuez à RPC et à Sortie RPC la valeur True. Par ailleurs, attribuez à Activer la promotion des transactions distribuées pour RPC la valeur False.
Vérifiez les paramètres dynamiques du fournisseur sélectionné pour le serveur lié : développez le nœud Fournisseurs sous Serveurs liés dans l'Explorateur d'objets, puis cliquez avec le bouton droit sur le fournisseur, et cliquez sur Propriétés. Sélectionnez Activer en regard de Paramètre dynamique.
Vérifiez que le Coordinateur de transactions distribuées (DTC, Distributed Transaction Coordinator) est démarré sur les deux serveurs.
Appelez catalog.get_project pour retourner les données binaires du projet, puis appelez catalog.deploy_project. La valeur retournée par catalog.get_project est insérée dans une variable de table de type varbinary (max). Le serveur lié ne peut pas retourner des résultats qui sont varbinary (max).
Dans l'exemple suivant, catalog.get_project retourne une valeur binaire pour le projet SSISPackages sur le serveur lié. catalog.deploy_project déploie le projet sur le serveur local, dans un dossier nommé DestFolder.
declare @resultsTableVar table (
project_binary varbinary(max)
)
INSERT @resultsTableVar (project_binary)
EXECUTE [MyLinkedServer].[SSISDB].[catalog].[get_project] 'Packages', 'SSISPackages'
declare @project_binary varbinary(max)
select @project_binary = project_binary from @resultsTableVar
exec [SSISDB].[CATALOG].[deploy_project] 'DestFolder', 'SSISPackages', @project_binary
Voir aussi
Tâches
Déployer des projets sur le serveur Integration Services
Exécuter un package dans les outils de données SQL Server
Exécuter un package sur le serveur SSIS à l'aide de SQL Server Management Studio