Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Задайте динамично кода на задачата на скрипта в SSIS 2012

Както забелязахте, Помощни методи за VSTA можете да използвате през 2008 г., бяха преместени/премахнати през 2012 г. Все още е възможно да се направи, но кодът е променен.

Най-лесното нещо, което можете да направите, е да заредите съществуващ проект с помощта на VstaHelper.LoadProjectFromFolder ().

Ако искате динамично да добавяте файлове със скриптове, вижте фрагмента по-долу. Има две основни неща, които трябва да имате предвид:

Класовете ScriptingEngine и VstaHelper представляват самата VSTA. Това е мястото, където ще създадете проекта и ще добавите нови файлове. Не можете да премахнете или замените съществуващ файл директно тук. Когато извикате SaveProjecToStorage(), това е като затваряне на прозореца на VSTA... записва проекта и компилирания двоичен файл в ScriptTask.

ScriptTask.ScriptStorage ви позволява директно да манипулирате съдържанието на изходния файл. От тук можете да промените съдържанието на файл.

Следният кодов фрагмент трябва да ви помогне да започнете.

static void Main(string[] args)
{
    // 1. Create new package, and add a script task
    var pkg = new Package();
    var exec = pkg.Executables.Add("STOCK:ScriptTask");
    var th = (TaskHost)exec;
    th.Name = "Script Task";
    th.Description = "This is a Script Task";
    var task = (ScriptTask)th.InnerObject;

    // 2. Set the script language - "CSharp" or "VisualBasic"
    task.ScriptLanguage = VSTAScriptLanguages.GetDisplayName("CSharp");

    // 3. Set any variables used by the script
    //task.ReadWriteVariables = "User::Var1, User::Var2";

    // 4. Create a new project from the template located in the default path
    task.ScriptingEngine.VstaHelper.LoadNewProject(task.ProjectTemplatePath, null, "MyScriptProject");

    // 5. Initialize the designer project, add a new code file, and build
    //task.ScriptingEngine.VstaHelper.Initalize("", true);
    //task.ScriptingEngine.VstaHelper.AddFileToProject("XX.cs", "FileContents");
    //task.ScriptingEngine.VstaHelper.Build("");

    // 6. Persist the VSTA project + binary to the task
    if (!task.ScriptingEngine.SaveProjectToStorage())
    {
        throw new Exception("Save failed");
    }

    // 7. Use the following code to replace the ScriptMain contents
    var contents = File.ReadAllText("path to file");
    var scriptFile =
        task.ScriptStorage.ScriptFiles["ScriptMain.cs"] =
        new VSTAScriptProjectStorage.VSTAScriptFile(VSTAScriptProjectStorage.Encoding.UTF8, contents);


    // 8. Reload the script project, build and save
    task.ScriptingEngine.LoadProjectFromStorage();
    task.ScriptingEngine.VstaHelper.Build("");

    // 9. Persist the VSTA project + binary to the task
    if (!task.ScriptingEngine.SaveProjectToStorage())
    {
        throw new Exception("Save failed");
    }

    // 10. Cleanup
    task.ScriptingEngine.DisposeVstaHelper();

    // 11. Save
    string xml;
    pkg.SaveToXML(out xml, null);

    File.WriteAllText(@"c:\temp\package.dtsx", xml);
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблем с преобразуване на дата MS Access към SQL Server

  2. Как да кодирам специфични за език символи, докато конвертирам varbinary() във varchar(max) в SQL Server 2012?

  3. Ръководство за начинаещи за SQL таблици

  4. Защо вмъкване-избиране към таблица с променлива от XML променлива толкова бавно?

  5. комбиниране на днес и общото предишно от днес на същата колона води до една sql заявка