需要一些帮助的家伙。我最近在为我的客户开发包时遇到了这个问题。我将 SQl 任务的结果集保存在用户变量(对象)中,然后尝试在各种脚本任务中访问它。变量的范围设置为包级别。当我使用下面的代码时,我可以在 S.Container 的 Script 任务中检索它的值,但是如果我在 S.Container2 的 Script 任务中使用相同的代码,我就无法做到。在后面,“dt”只显示标题,而不是数据。
这种特殊行为的任何原因。?我错过了什么?
SQL任务代码----------
select * from dimproduct
脚本任务代码----------
DataTable dt = new DataTable();
DataRow row = null;
OleDbDataAdapter oleDA = new OleDbDataAdapter();
oleDA.Fill(dt, Dts.Variables["Variable"].Value);
foreach (DataRow row_ in dt.Rows)
{
row = row_;
}
编辑 :: 以下代码也不起作用。
Variables lockedVariables = null;
Dts.VariableDispenser.LockForWrite("User::Variable");
Dts.VariableDispenser.GetVariables( ref lockedVariables);
object A;
A= lockedVariables["User::Variable"].Value;
lockedVariables.Unlock();
DataTable dt = new DataTable();
DataRow row = null;
OleDbDataAdapter oleDA = new OleDbDataAdapter();
oleDA.Fill(dt, A);
foreach (DataRow row_ in dt.Rows)
{
row = row_;
}