我有导入Integration Services的软件包。我已将它们全部设置好并且已将它们映射到运行状态。我的问题是我正在尝试以编程方式将值传递给包中的用户变量。
我有一个Start Date
和一个End Date
,我必须填充,但我无法找到任何关于我在做什么。有人可以帮忙吗?
我是使用LoadFromSqlServer
的新手,并不确定是否有更多信息需要您提供帮助,但如果您要求我将非常乐意编辑我的问题并添加所需内容。
非常感谢任何帮助。谢谢!
--- --- EDIT
这是我使用这段代码得到的错误:
Application app = new Application();
Package package = new Package();
Variables variables = package.Variables;
package = app.LoadFromSqlServer("\\File\\Path\\" + paramName, ".", "UserName"
, "Password", null);
variables["User::START_DATETIME"].Value = startDate;
variables["User::END_DATETIME"].Value = endDate;
DTSExecResult result = package.Execute();
这是错误:
Additional information: The variable cannot be found. This occurs when an attempt
is made to retrieve a variable from the Variables collection on a container during
execution of the package, and the variable is not there. The variable name may have
changed or the variable is not being created.
答案 0 :(得分:0)
您可以通过以下方式将varibles传递给SSIS包:
Package package = null;
//Load the SSIS Package which will be executed
package.Variables["User::StartDate"].Value = '2014-01-01';
package.Variables["User::EndDate"].Value = '2014-01-10';
修改强> 1.检查是否没有拼写错误:
if (package .Variables.Contains["StartDate"])
{
...
}
您也可以尝试使用Dispenser类:
package.VariableDispenser.LockOneForWrite(“StartDate”,变量) package.Variables [“User :: StartDate”]。Value ='2014-01-01'; variables.Unlock()
答案 1 :(得分:0)
我实际上能够找到问题的问题。这是相当愚蠢但仍然是一个解决方案。
在我的代码中我正在使用
Variables variables = package.Variables;
在我实际将一个包附加到我的package
变量之前。
切换我的代码以在将包附加到我的变量之后调用变量。新代码如下所示:
Application app = new Application();
Package package = new Package();
package = app.LoadFromSqlServer("\\File\\Path\\" + paramName, ".", "UserName"
, "Password", null);
Variables variables = package.Variables;
variables["START_DATETIME"].Value = startDate;
variables["END_DATETIME"].Value = endDate;
DTSExecResult result = package.Execute();