Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Integration Services中设置包用户变量值并运行包C#LoadFromSqlServer_C#_Ssis_Package_Ssms - Fatal编程技术网

在Integration Services中设置包用户变量值并运行包C#LoadFromSqlServer

在Integration Services中设置包用户变量值并运行包C#LoadFromSqlServer,c#,ssis,package,ssms,C#,Ssis,Package,Ssms,我有导入到Integration Services的包。我已将它们全部设置好,并已将它们映射为运行。我的问题是,我试图以编程方式将值传递给包中的用户变量 我必须填写一个开始日期和一个结束日期,但我无法找到任何关于我正在做的事情的信息。有人能帮忙吗 我刚开始使用LoadFromSqlServer,不确定是否还有其他信息需要帮助,但如果您询问,我将非常乐意编辑我的问题并添加所需内容 任何帮助都将不胜感激。谢谢 ---编辑--- 下面是我使用这段代码时遇到的错误: Application app =

我有导入到Integration Services的包。我已将它们全部设置好,并已将它们映射为运行。我的问题是,我试图以编程方式将值传递给包中的用户变量

我必须填写一个
开始日期
和一个
结束日期
,但我无法找到任何关于我正在做的事情的信息。有人能帮忙吗

我刚开始使用
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.

您可以通过以下方式将变量传递到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.variablepender.LockOneForWrite(“StartDate”,变量) package.Variables[“User::StartDate”]。值='2014-01-01'; variables.Unlock()


  • 事实上,我能够找到问题的症结所在。这是相当愚蠢的,但仍然是一个解决办法

    在我使用的代码中

    Variables variables = package.Variables;
    
    在我实际将包附加到
    变量之前

    在包被附加到我的变量后,切换代码以调用变量起作用。新代码如下所示:

    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();
    

    谢谢你的回复。不幸的是,这正是我目前试图使用的,我得到一个错误,说它无法在变量列表中找到变量名。你知道为什么会这样吗?我在我的问题中添加了上面的全部错误。