SSIS用户变量分配

时间:2011-10-19 10:41:57

标签: ssis

有人知道如何在SSIS中的脚本中将一个用户变量分配给另一个用户变量吗?

我有两个用户变量,它们都是DateTime类型。

我尝试在脚本任务中将一个分配给另一个,我得到一个无效的类型错误

Dts.Variables["Query_AccountingDay"].Value = Dts.Variables["Override_AccountingDay"].Value;

给我错误: 错误:System.Reflection.TargetInvocationException:调用目标已抛出异常。 ---> Microsoft.SqlServer.Dts.Runtime.DtsRuntimeException:分配给变量“User :: Query_AccountingDay”的值的类型与当前变量类型不同。变量在执行期间可能不会更改类型。变量类型是严格的,除了Object类型的变量。

我尝试过施法,但是没有用。

请帮助

2 个答案:

答案 0 :(得分:4)

所以你试过了?

Dts.Variables["Query_AccountingDay"].Value = Convert.ToDateTime(Dts.Variables["Override_AccountingDay"].Value.ToString());

如果这不起作用,请抓住变量窗口的快速截图,以便我们验证数据类型?

Mine看起来像这样,Override值是2007-07-07,查询是2011-10-19

Variables window

如此配置脚本任务 Script task variables window

代码正文如下所示

    public void Main()
    {
        MessageBox.Show(String.Format("{0}:{1}", "Override_AccountingDay", Dts.Variables["Override_AccountingDay"].Value));
        MessageBox.Show(String.Format("Before {0}:{1}", "Query_AccountingDay", Dts.Variables["Query_AccountingDay"].Value));

        Dts.Variables["Query_AccountingDay"].Value = Convert.ToDateTime(Dts.Variables["Override_AccountingDay"].Value.ToString());
        Dts.TaskResult = (int)ScriptResults.Success;

        MessageBox.Show(String.Format("After {0}:{1}", "Query_AccountingDay", Dts.Variables["Query_AccountingDay"].Value));
    }

通过消息框执行结果

---------------------------

---------------------------
Override_AccountingDay:7/7/2007 7:37:36 AM
---------------------------
OK   
---------------------------

---------------------------

---------------------------
Before Query_AccountingDay:10/19/2011 7:37:41 AM
---------------------------
OK   
---------------------------

---------------------------

---------------------------
After Query_AccountingDay:7/7/2007 7:37:36 AM
---------------------------
OK   
---------------------------

答案 1 :(得分:0)

必须将Query_AccountingDay变量指定为ReadWrite变量,而不是指定的ReadOnly变量。

希望这有帮助

奈德