有人知道如何在SSIS中的脚本中将一个用户变量分配给另一个用户变量吗?
我有两个用户变量,它们都是DateTime类型。
我尝试在脚本任务中将一个分配给另一个,我得到一个无效的类型错误
Dts.Variables["Query_AccountingDay"].Value = Dts.Variables["Override_AccountingDay"].Value;
给我错误: 错误:System.Reflection.TargetInvocationException:调用目标已抛出异常。 ---> Microsoft.SqlServer.Dts.Runtime.DtsRuntimeException:分配给变量“User :: Query_AccountingDay”的值的类型与当前变量类型不同。变量在执行期间可能不会更改类型。变量类型是严格的,除了Object类型的变量。
我尝试过施法,但是没有用。
请帮助
答案 0 :(得分:4)
所以你试过了?
Dts.Variables["Query_AccountingDay"].Value = Convert.ToDateTime(Dts.Variables["Override_AccountingDay"].Value.ToString());
如果这不起作用,请抓住变量窗口的快速截图,以便我们验证数据类型?
Mine看起来像这样,Override值是2007-07-07,查询是2011-10-19
如此配置脚本任务
代码正文如下所示
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变量。
希望这有帮助
奈德