在SSIS变量中设置来自数据库的文件路径以进行记录

时间:2013-03-15 12:43:40

标签: c# variables logging ssis

我的数据库表中有一些路径如下:

ID          PATHXML              PATHPICT               PATHSONG
1         D:\XML\Here        D:\Picture\Image      D:\Blur\Song2
2         D:\XML\File        D:\Picture\X-Files    D:\IRONMAIDEN\Fearofthedark

我想打开SSIS中的日志记录并将此日志结果保存到PathSong,例如。 d:\模糊\ Song2 \ eventlog.log

我创建了一个变量来获取此路径。但是当我使用这个变量创建一个表达式时,它不起作用。那么我该怎么做才能解决这个问题呢?

1 个答案:

答案 0 :(得分:1)

在脚本组件(数据流任务)中访问包变量与在脚本任务中访问包变量不同。对于脚本组件,首先需要打开脚本转换编辑器(右键单击组件并选择“编辑...”)。在“脚本”选项卡的“自定义属性”部分中,您可以以只读或读写方式输入(或选择)要使脚本可用的属性:enter image description here

然后,在脚本本身中,变量将作为Variables对象的强类型属性提供:

// Modify as necessary
public override void PreExecute()
{
    base.PreExecute();
    string thePath = Variables.FilePath;
    // Do something ...
}

public override void PostExecute()
{
    base.PostExecute();
    string theNewValue = "";
    // Do something to figure out the new value...
    Variables.FilePath = theNewValue;
}

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    string thePath = Variables.FilePath;
    // Do whatever needs doing here ...
}

一个重要的警告:如果您需要写入包变量,则只能使用PostExecute()方法执行此操作。

关于代码段:

IDTSVariables100 varCollection = null;
this.VariableDispenser.LockForRead("User::FilePath");
string XlsFile;

XlsFile = varCollection["User::FilePath"].Value.ToString();

varCollection初始化为null,永远不会设置为有效值。因此,任何取消引用它的尝试都将失败。