实现目标的步骤

需要 SSIS 任务。

  1. 数据流任务: 由于脚本组件仅在数据流中可用。
  2. 脚本组件: 在此我们将使用变量并使用其中的值。

脚步

有两种方法可以访问脚本组件中的变量

第一种方法 - 使用 this.Variables

  1. 创建两个用户变量 Result(String),UserVar(String value:UserVar),还创建一个包参数 PackageVar(String value:PackageVariable)和一个项目参数 ProjectParam(String value:ProjectParameter)。
  2. 收藏夹部分下的“SSIS 工具箱”中拖放数据流任务StackOverflow 文档
  3. 双击数据流任务,它将带你进入数据流。现在,从 SSIS 工具箱中拖放 “ 公共” 部分下的“ 脚本组件” 。它会提示窗口有三个选择 Source,Destination 和 Transformation。选择 Source 并单击 OK。 ** StackOverflow 文档
  4. 双击脚本组件,在右侧为 ReadOnlyVariables 单击三个点,它将打开一个 Select Variable 窗口。现在选择 User::UserVar,$ Package::PackageVar 和$ Project::ProjectParm。单击确定。同样单击与 ReadWriteVariables 对应的三个点,然后选择 User::Result。单击确定。 StackOverflow 文档
  5. 在脚本转换编辑器的左侧选择输入和输出,在中心展开输出 O - >展开底部的输出列单击添加列。当我们使用脚本组件作为 Source 时,它需要有输出列,这就是我们创建此输出列的原因。 StackOverflow 文档
  6. 在左侧单击脚本,在编辑器的右下角单击编辑脚本,它将打开一个新窗口,在此窗口中找到 PostExecute() 方法并通过此写入 this.Variables.Result = this.Variables.UserVar + this.Variables.PackageVar + this.Variables.ProjectParm;。变量我们正在访问变量。单击 Ctrl + S 保存并关闭窗口。单击确定。 StackOverflow 文档
  7. 转到控制流并右键单击“ *数据流任务”,*然后选择“ 编辑断点” 。现在,在新的 Set Breakpoints 窗口中,当容器收到 OnPostExecute 事件时,选择 Break 。单击确定。 StackOverflow 文档
  8. 现在,在*解决方案资源管理器中,*右键单击包名称,然后单击执行包。从菜单栏中单击 Debug - > Windows - > Watch - > Watch 1.现在底部的 Watch 窗口将可见。在名称下键入 User::Result,然后单击 Enter。在下可以看到连接值{UserVarPackageVariableProjectParameter}。 StackOverflow 文档

第二种方法 - 使用 VariableDispenser

当使用可变分配器时,将变量添加到 ReadOnlyVariables 并且不需要 ReadWriteVariables。你可以使用以下代码来读取和写入变量值:( 代码适用于 ssis 2008)

private void WriteVariable(String varName, Object varValue)
{

  IDTSVariables100 vars = null;
  VariableDispenser.LockForWrite(varName);
  VariableDispenser.GetVariables(out vars);
  vars[varName].Value = varValue;
  vars.Unlock();
 
}

private Object ReadVariable(String varName)
{

  Object varValue;
  IDTSVariables100 vars = null;
  VariableDispenser.LockForRead(varName);
  VariableDispenser.GetVariables(out vars);
  varValue = vars[varName].Value;
  vars.Unlock();
 
  return varValue;

}