sql >> データベース >  >> RDS >> Sqlserver

SSIS 2012 でスクリプト タスク コードを動的に設定する

    お気づきのとおり、VSTA ヘルパー メソッド 2008 年に使用できたものは、2012 年に移動/削除されました。引き続き使用できますが、コードが変更されています。

    最も簡単な方法は、 を使用して既存のプロジェクトを読み込むことです。 VstaHelper.LoadProjectFromFolder ().

    スクリプト ファイルを動的に追加する場合は、以下のスニペットを参照してください。主に次の 2 つの点に注意してください:

    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. 10進数として格納されたIPアドレス-点線のクワッドとして表示するPL/SQL

    2. MySQLコードと同等のMySQLi

    3. mysql-> tblに挿入(別のテーブルから選択)といくつかのデフォルト値

    4. OracleでORDERを使用してINSERT