在Integration Services中设置包用户变量值,然后运行包C#LoadFromSqlServer
本文关键字:变量值 然后 C#LoadFromSqlServer 运行 用户 Services 设置 包用户 Integration | 更新日期: 2023-09-27 18:29:01
我有导入Integration Services的包。我把它们都设置好了,并把它们映射到运行中。我的问题是,我试图以编程方式将值传递给包中的用户变量。
我必须填充Start Date
和End Date
,但我找不到任何关于我正在做的事情的信息。有人能帮忙吗?
我是LoadFromSqlServer
的新手,不确定是否还有其他信息需要你帮助,但如果你问我,我会非常乐意编辑我的问题并添加需要的内容。
任何帮助都将不胜感激。谢谢
---编辑---
这是我使用这段代码时得到的错误:
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.
实际上我能够找到问题所在。这相当愚蠢,但仍然是一个解决方案。
在我的代码中,我使用
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();
您可以通过以下方式将变量传递到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"])
{
...
}
- 请确保SSIS服务正在运行
您也可以尝试使用点胶机类:
package.VariableDispenser.LockOneForWrite("StartDate",variables)包裹Variables["User::StartDate"].Value='2014-01-01';变量。解锁()