J'ai une application où chaque fois qu'un fichier est téléchargé dans un répertoire, je dois appeler SSIS pour analyser le fichier XML. Puis-je appeler un SSIS directement depuis un service Windows .NET?Comment puis-je appeler SSIS par programme à partir de .NET?
Répondre
Running SSIS package programmatically.
Je préfère la deuxième méthode:
Démarrer processus dtexec.exe. DTEXEC est un utilitaire de ligne de commande pour l'exécution de packages SSIS. Voir ses options de ligne de commande ici: http://msdn2.microsoft.com/en-us/library/ms162810.aspx
Avantages: l'emballage en cours d'exécution gagne en fiabilité. Peut être utilisé à partir de n'importe quel langage de programmation (y compris .NET 1.1 :)). Facile à transmettre les paramètres en définissant des valeurs de variables.
Inconvénients: Également disponible seulement en local. Plus difficile d'obtenir des informations sur la progression du paquet (mais la journalisation SSIS peut vous donner plus de fonctionnalités). Certains frais généraux sur le démarrage du nouveau processus (probablement minime par rapport au temps d'exécution pour les gros paquets). Spécifique à ASP.NET: La fonction Win32 CreateProcess ignore l'usurpation d'identité du thread. Si vous souhaitez que DTEXEC s'exécute sous un compte différent du compte de processus ASP.NET, vous devez soit entrer le nom/mot de passe et le transmettre à Process.Start, soit utiliser la méthode décrite dans la base de connaissances suivante pour exécuter le processus enfant sous le compte usurpé http://support.microsoft.com/kb/889251 .
Vous pouvez appeler SSIS de manière programmatique, exécuter le package et modifier la configuration à partir d'un code .NET à l'aide de DTS runtime. Here is complete code of how you can do it.
vous pouvez exécuter votre package SSIS programme, comme suit:
using System;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
namespace ConsoleApplicationSSIS
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Loading SSIS Service...");
//Application object allows load your SSIS package
Application app = new Application();
//In order to retrieve the status (success or failure) after running SSIS Package
DTSExecResult result ;
//Specify the location of SSIS package - dtsx file
string SSISPackagePath = @"C:\Microsofts\BI\SSIS\ConsoleApplicationSSIS\IntegrationServiceScriptTask\Package.dtsx";
//Load your package
Package pckg = (Package)app.LoadPackage(SSISPackagePath,true,null);
//Execute the package and retrieve result
result = pckg.Execute();
//Print the status success or failure of your package
Console.WriteLine("{0}", result.ToString());
Console.ReadLine();
}
}
}
si vous voulez un échantillon complet, allez à: http: //hassanboutougha.wordpress.com/2012/10/13/run- your-ssis-package-progammatically/
J'explique comment créer un simple paquet SSIS et comment l'appeler par programme à partir d'une application console. Ne pas oublier d'avoir cet assembly: C: \ Program Files (x86) \ Microsoft SQL Server \ 100 \ SDK \ Assemblies \ Microsoft.SQLServer.DTSRuntimeWrap.dll pour référencer l'espace de noms ssis d'exécution
vous pouvez également transmettre vos variables par programme et modifiez également les connexions source et destination de votre package ssis
Vous pouvez appeler le package SSIS à partir de votre service Windows. Mais Microsoft.SqlServer.Dts doit être installé dans le système sur lequel les services Windows vont s'exécuter. Si vous avez installé DTS sur cette machine, appelez directement le paquet SSIS. Si ce n'est pas installé, vous devriez faire ce qui suit.
- Créer le package SSIS
- Créer le travail qui exécute le package SSIS
- Dans votre ADO.NET [réside dans le code des services Windows], appel procédure stockée qui exécute l'emploi [configuré pour exécuter le SSIS paquet]. Voici un exemple qui devrait être appelé à partir de votre code .NET.
EXEC msdb.dbo.sp_start_job N'YourJobName '
Espérons que cela aide!
Mise à jour cette jolie vieille question:
Sur SQL Server 2012, vous pouvez le faire simplement en créant une procédure stockée qui appelle à create_execution
et set_execution_parameter
Guide étape par étape peut être trouvée ici: https://blogs.msdn.microsoft.com/biblog/2013/05/07/step-by-step-of-executing-ssis-2012-package-through-stored-procedure/
- 1. Comment exécuter un package SSIS à partir de .NET?
- 2. Ajouter par programme un SSIS ForEachLoop
- 3. Comment appeler une bibliothèque C à partir de .NET
- 4. Comment appeler un service Web à partir d'un flux de données dans SSIS?
- 5. Pouvez-vous exécuter une tâche SSIS à partir de .net?
- 6. Comment appeler un service Web .NET à partir d'Android?
- 7. Comment extraire les macros par programme à partir du document OpenOffice.org Writer à l'aide de .NET?
- 8. Compilez par programme une tâche de script dans SSIS
- 9. Comment créer par programme la table MS Access dans SQL Server à l'aide de SSIS?
- 10. Comment puis-je appeler un programme externe de longue durée à partir d'Excel/VBA?
- 11. Exportation de données par programme à partir d'une application
- 12. C# - Comment peupler un .net DataGridView par programme?
- 13. Comment exécuter un script PowerShell à partir de SSIS
- 14. Comment appeler une fonction à partir de données binaires
- 15. Comment appeler un processus Java à partir de Windows Powershell?
- 16. Accès par programme à un contrôle à partir d'un DataTemplate
- 17. Comment appeler le code .NET (C#/vb.net) à partir de vbScript?
- 18. Comment appeler un service Web .NET à partir de Blackberry Simulator?
- 19. Comment appeler un script Perl à partir d'Excel?
- 20. Appeler une URL à partir de javascript
- 21. Comment appeler un fichier batch à partir d'un fichier MSI
- 22. Comment se connecter à wordpress par programme?
- 23. Comment appeler un événement par programmation?
- 24. Comment appeler une méthode IronPython 2 à partir de C#
- 25. Comment appeler un service Web WCF à partir de Silverlight?
- 26. Comment appeler un service Web à partir de jQuery
- 27. Comment appeler le code système à partir de JScript/VBScript?
- 28. Comment appeler un service Web WCF à partir de jQuery?
- 29. Comment appeler le code Java à partir de C#?
- 30. Comment puis-je accéder par programme à la table de routage ASP.NET à partir d'un filtre?
Profitez de l'exécution du package au sein de votre service/application .net: Vous pouvez passer des objets à la collection variable de votre colis. (Essayez de passer un objet à dtexec ...) – thijs