Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Đặt động mã Tác vụ Tập lệnh trong SSIS 2012

Như bạn đã nhận thấy, Phương pháp của trình trợ giúp VSTA bạn có thể sử dụng vào năm 2008 đã được di chuyển / loại bỏ vào năm 2012. Vẫn có thể làm được, nhưng mã đã thay đổi.

Điều dễ dàng nhất để làm là tải một dự án hiện có bằng cách sử dụng VstaHelper.LoadProjectFromFolder ().

Nếu bạn muốn thêm động các tệp tập lệnh, hãy xem đoạn mã bên dưới. Có hai điều chính bạn cần ghi nhớ:

Các lớp ScriptingEngine và VstaHelper đại diện cho chính VSTA. Đây là nơi bạn tạo dự án và thêm các tệp mới. Bạn không thể xóa hoặc thay thế tệp hiện có trực tiếp tại đây. Khi bạn gọi SaveProjecToStorage (), nó giống như đóng cửa sổ VSTA… nó lưu dự án và biên dịch nhị phân vào ScriptTask.

ScriptTask.ScriptStorage cho phép bạn thao tác trực tiếp nội dung tệp nguồn. Từ đây, bạn có thể sửa đổi nội dung của tệp.

Đoạn mã sau sẽ giúp bạn bắt đầu.

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. Tablix:Lặp lại các hàng tiêu đề trên mỗi trang không hoạt động - Trình tạo Báo cáo 3.0

  2. OrderBy trong SQL Server để đặt các giá trị dương trước các giá trị âm

  3. Liên minh máy chủ Sql nhưng giữ trật tự

  4. Tìm kiếm CHARINDEX và LIKE cho hiệu suất rất khác nhau, tại sao?

  5. Chuyển đổi ‘time’ thành ‘datetimeoffset’ trong SQL Server (Ví dụ T-SQL)