将User :: variable传递给自定义ssis任务

时间:2011-10-24 10:38:22

标签: c# ssis task

我正在开发自定义SSIS任务。它公开了一些由用户定义的属性。目前我还没有实现GUI,因此我在任务属性窗口中设置了参数。

现在说我有一个名为LastName的属性,我有一个SSIS Variable User :: LastName。 当我将User :: LastName放入属性时,它只传递字符串:“User :: LastName”而不是评估字符串的值....

如何让它传递字符串的值?

2 个答案:

答案 0 :(得分:1)

正如您已确定该点,您已将变量的名称传递给组件。您需要在Dts.Variables集合中评估对象的值,并将其强制转换为适当的类型。

我认为你在组件中有两个变量,一个来回传递变量名,一个来保存实际值。你可以制作一个处理这两者的结构,但我愿意在答案中写意;)

// Retrieve a single variable. 
// Assumes this.LastNameVariable is a string with value of User::LastName 

IDTSVariables100 variables = null;

VariableDispenser.LockOneForRead(this.LastNameVariable, ref variables);

this.LastName = variables[0].Value.ToString();
variables.Unlock();

答案 1 :(得分:1)

我找到了解决方案。

在包中定义变量LastName,给它一个值,比如“John”。然后在自定义任务属性中,单击“表达式”,然后单击[...]。在属性下选择LastName属性(或在自定义任务中定义的任何名称),然后在experssion下单击[...]。通过扩展变量,您可以获得所有变量的列表。然后,您可以将所需变量拖放到下面的“表达式”输入框中。评估表达式按钮可以验证它是否包含所需的值。然后单击“确定”,然后单击“确定”...构建SSIS项目然后执行操作...