2008-10-06 4 views

ответ

9

Running SSIS package programmatically.

Я предпочитаю второй метод:

процесс Start dtexec.exe. DTEXEC - это утилита командной строки для выполнения пакетов SSIS. См. Здесь параметры командной строки: http://msdn2.microsoft.com/en-us/library/ms162810.aspx

Преимущества: работающий пакет из надежной надежности процессов. Может использоваться с любого языка программирования (включая .NET 1.1 :)). Легко передавать параметры, задавая значения переменных.

Недостатки: Также местные. Сложнее получить информацию о прогрессе пакета (но регистрация SSIS может дать вам большую часть функциональности). Некоторые издержки при запуске нового процесса (вероятно, минимальные по сравнению с временем выполнения для больших пакетов).

ASP.NET: функция Win32 CreateProcess игнорирует олицетворение потока. Поэтому, если вы хотите, чтобы DTEXEC выполнялся под учетной записью, отличной от учетной записи процесса ASP.NET, вы должны либо ввести имя пользователя/пароль, либо передать его в Process.Start, либо использовать метод, описанный в следующем KB, чтобы запустить дочерний процесс под имперсональной учетной записью http://support.microsoft.com/kb/889251 ,

+0

Выгода запуска пакета в сервис/.net приложения: Вы можете передать объекты переменной коллекции вашего пакета. (Попробуйте передать объект dtexec ...) – thijs

0

Вы можете вызвать программу SSIS программно, выполнить пакет и изменить конфигурацию из .NET-кода с использованием среды выполнения DTS. Here is complete code of how you can do it.

2

вы можете запустить пакет SSIS программно, следующим образом:

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(); 
     } 
    } 
} 

если вы хотите полный образец, перейдите по ссылке: Http: //hassanboutougha.wordpress.com/2012/10/13/run- ваш-ssis-package-progammatically/

Я объясню, как создать простой пакет SSIS и после того, как его программным путем назвать из консольного приложения. Не забудьте сделать эту сборку: C: \ Program Files (x86) \ Microsoft SQL Server \ 100 \ SDK \ Assemblies \ Microsoft.SQLServer.DTSRuntimeWrap.dll для ссылки на пространство имен sys runtime

Вы также можете передать свои переменные программно и изменять также исходные и целевые соединения вашего пакета SIS.

0

Вы можете вызвать пакет SSIS из своей службы Windows. Но Microsoft.SqlServer.Dts должен быть установлен в систему, в которой будут запускаться службы Windows. Если вы установили DTS, установленную на этом компьютере, напрямую вызовите пакет SSIS. Если он не установлен, вы должны сделать следующее.

  1. Создать пакет
  2. SSIS Создайте задание, которое запускает пакет SSIS
  3. В вашем ADO.NET [находится в окне кода услуги] Вызов хранимого процедуры, которая проходит работу [сконфигурированную для запуска SSIS пакет]. Ниже приведен пример из вашего кода .NET.

EXEC msdb.dbo.sp_start_job N'YourJobName '

Надеюсь, это поможет!

0

Обновление это довольно старый вопрос:

В SQL Server 2012 вы можете сделать это просто путем создания хранимой процедуры, которая будет вызывать к create_execution и set_execution_parameter

Шаг за шагом руководство можно найти здесь: https://blogs.msdn.microsoft.com/biblog/2013/05/07/step-by-step-of-executing-ssis-2012-package-through-stored-procedure/

enter image description here