Как программно вызвать SSIS из .NET? - PullRequest
4 голосов
/ 06 октября 2008

У меня есть приложение, в котором всякий раз, когда файл загружается в каталог, мне приходится вызывать SSIS для анализа XML-файла.

Можно ли вызвать SSIS напрямую из службы .NET Windows?

Ответы [ 5 ]

9 голосов
/ 06 октября 2008

Программный запуск служб SSIS .

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

Запустить процесс 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, либо использовать метод, описанный в следующем КБ, для запуска дочернего процесса под олицетворенной учетной записью http://support.microsoft.com/kb/889251.

2 голосов
/ 14 октября 2012

вы можете запустить пакет служб 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-your-ssis-package-progammatically/

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

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

0 голосов
/ 18 апреля 2017

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

В 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

0 голосов
/ 23 ноября 2012

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

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

EXEC msdb.dbo.sp_start_job N'YourJobName '

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

0 голосов
/ 06 мая 2011

Вы можете вызвать SSIS программно, выполнить пакет и изменить конфигурацию из кода .NET, используя среду выполнения DTS. Вот полный код того, как вы можете это сделать .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...