Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Setel kode Tugas Skrip secara dinamis di SSIS 2012

Seperti yang Anda perhatikan, Metode pembantu VSTA Anda dapat menggunakan pada tahun 2008 dipindahkan/dihapus pada tahun 2012. Hal ini masih mungkin dilakukan, tetapi kodenya telah berubah.

Hal termudah untuk dilakukan adalah memuat proyek yang ada menggunakan VstaHelper.LoadProjectFromFolder ().

Jika Anda ingin menambahkan file skrip secara dinamis, lihat cuplikan di bawah ini. Ada dua hal utama yang perlu Anda ingat:

Kelas ScriptingEngine dan VstaHelper mewakili VSTA itu sendiri. Di sinilah Anda akan membuat proyek, dan menambahkan file baru. Anda tidak dapat menghapus atau mengganti file yang ada secara langsung di sini. Saat Anda memanggil SaveProjecToStorage(), ini seperti menutup jendela VSTA … menyimpan proyek dan mengkompilasi biner ke ScriptTask.

ScriptTask.ScriptStorage memungkinkan Anda untuk langsung memanipulasi konten file sumber. Dari sini, Anda dapat mengubah konten file.

Cuplikan kode berikut akan membantu Anda memulai.

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. Apa batasan dari SqlDependency?

  2. Bagaimana saya bisa mengecualikan batas atas di ANTARA server sql

  3. Bagaimana cara memperbarui n baris dalam sebuah tabel?

  4. Apakah mungkin menjalankan prosedur tersimpan secara otomatis tanpa sql server Agent?

  5. Menggunakan Petunjuk NOLOCK di EF4?