SSIS脚本任务更改Variable的Value属性

时间:2012-04-11 12:26:09

标签: variables ssis

我尝试在ScriptTask中简单地更改SSIS变量的值:

        string path = Dts.Connections["BazyPobrane"].ConnectionString.ToString();
        string[] nameZIParray = Directory.GetFiles(path, "*.ZIP");
        string[] nameRARarray = Directory.GetFiles(path, "*.RAR");

        foreach (string nameZIP in nameZIParray) //search new ZIP
        {
            if (File.GetCreationTime(nameZIP) > DateTime.Now.AddDays(-1))
            {
                Dts.Variables["User::NazwaPliku"].Value = Path.GetFileName(nameZIP);
            }

        }
        foreach (string nameRAR in nameRARarray) //search new RAR
        {
            if (File.GetCreationTime(nameRAR) > DateTime.Now.AddDays(-1))
            {
                Dts.Variables["User::NazwaPliku"].Value = Path.GetFileName(nameRAR);
            }

        }
        Dts.TaskResult = (int)ScriptResults.Success;

执行ScriptTask之后,它根本不会更改变量Value。调试模式似乎很好。也许我想念一些组件设置? THX!

2 个答案:

答案 0 :(得分:1)

要检查的一些事项:

  1. 您确定变量没有变化吗?如果您将后续脚本任务与MessageBox放在一起,它是否显示正确的值?

  2. 我认为您不需要变量类型,即删除“user ::”

  3. 确保变量位于ReadWriteVariables属性中,如@OcasoP

  4. 所示
  5. 变量的范围是什么?确保您在不同的范围内没有两个副本,或者至少您 所拥有的副本在脚本范围内可见

  6. 您可以在写入变量之前尝试锁定变量(应该等同于上面的(3))

  7. 最后一点的代码示例:

    IDTSVariables100 variables = null;
    this.VariableDispenser.LockOneForWrite("NazwaPliku",ref variables);
    variables[0].Value = myValue;
    variables.Unlock();
    

答案 1 :(得分:0)

调试脚本任务添加MsgBox(variable_name)并通过执行查看其值。 最佳调试选项:)