2008-10-06 4 views

Répondre

9

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 .

+0

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

2

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

0

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.

  1. Créer le package SSIS
  2. Créer le travail qui exécute le package SSIS
  3. 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!

Questions connexes