2013-11-13 2 views
1

Ниже приведен код, на который я буду ссылаться. Несколько вопросов:Выполнение программного пакета SSIS

  1. Могу ли я ссылаться на два разных файла .DTSX в одном выражении «String pkgLocation =»? (Я сделал это ниже), если я не могу этого сделать, и у вас есть более 10 различных пакетов для программного программирования, есть ли быстрый и безболезненный способ сделать это?

  2. Представлен ли приведенный ниже код Entity Framework?

  3. Прошло некоторое время с тех пор, как я играл с SSIS, и мне интересно, как конкретно его выполнить? просто нажатие «Выполнить» ничего не показывает мне в Test Explorer (возможно, потому, что это не тест), и когда я пытаюсь выполнить его, я получаю сообщение, в котором «проект с типом вывода библиотеки классов не может быть запущен напрямую». Что делает это даже имею в виду?

  4. Есть ли я на правильном пути? (В отношении выполнения этих пакетов программно)


public class UnitTest1 
    { 

     private void Execute_Package() 
     { 
      string pkgLocation = @"C:\tfs\z Reports\BI Projects\Customer Service Data Warehouse\Customer Service Data Warehouse" + 
           @"C:\tfs\z Reports\BI Projects\Customer Service Data Warehouse\SRS DataMart SSIS\SRSDimCategorizationLoad.dtsx"; 
      Package pkg; 
      Application app; 
      DTSExecResult pkgResults; 
      Variables vars; 

      app = new Application(); 
      pkg = app.LoadPackage(pkgLocation, null); 

      vars = pkg.Variables; 
      vars["A_Variable"].Value = "Some value"; 

      pkgResults = pkg.Execute(); 


     } 
    } 

Вот старый код, что я сделал в коде выше:

private static void LoadTicketLifeCycleSnapShotFact() 
     { 
      ExceutePackage(@"C:\tfs\z Reports\BI Projects\Customer Service Data Warehouse\Customer Service Data Warehouse\SAPBPDataToStage.dtsx"); 

      ExceutePackage(@"C:\tfs\z Reports\BI Projects\Customer Service Data Warehouse\SRS DataMart SSIS\SRSDimCategorizationLoad.dtsx"); 
+0

Были ли ваши пакеты построены с использованием модели развертывания проекта? Это ново в 2012 году – billinkc

+0

noo! в 2008 году r2 –

+0

Я полностью забываю, как программно выполнять пакеты SSIS ... –

ответ

2

Я бы создать массив расположения пакетов, а затем перечислять через них вызов метода Execute для каждого из них ,

private void Execute_Package() 
    { 
     string [] pkgLocations = new string[]{ 
      @"C:\tfs\z Reports\BI Projects\Customer Service Data Warehouse\Customer Service Data Warehouse", 
      @"C:\tfs\z Reports\BI Projects\Customer Service Data Warehouse\SRS DataMart SSIS\SRSDimCategorizationLoad.dtsx"}; 
     Package pkg; 
     Application app; 
     DTSExecResult pkgResults; 
     Variables vars; 

     app = new Application(); 
     foreach(string currentFile in pkgLocations) 
     { 
      pkg = app.LoadPackage(currentFile, null); 

      // Assumes this variable exists in all of the packages 
      vars = pkg.Variables; 
      vars["A_Variable"].Value = "Some value"; 

      pkgResults = pkg.Execute(); 
     } 
    } 

Чтобы ответить на конкретные вопросы, поставленные Вами вопросы:

  1. Нет, вы не можете ссылаться на них, как было указано. Выше описано, как вы будете последовательно выполнять пакеты.
  2. Я понятия не имею, является ли это «EF». Я предполагаю, что не
  3. Вы создали тест library. Библиотека не является управляемой вещью. Что-то еще нужно сделать (что-то с помощью метода Main). Для тестирования это будет ваш тестовый жгут (nUnit). В качестве альтернативы, я бы создал приложение Console, которое использует проект тестирования, чтобы убедиться, что вы правильно построили тестовые примеры (и затем вы создаете тестовый проект для тестирования вашего теста ...)
  4. Да, ваш код выше создает экземпляр пакет, присваивает значение переменной SSIS, а затем запускает пакет с этой новой переменной.
Смежные вопросы