我的数据库表中有一些路径如下:
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
我创建了一个变量来获取此路径。但是当我使用这个变量创建一个表达式时,它不起作用。那么我该怎么做才能解决这个问题呢?
答案 0 :(得分:1)
在脚本组件(数据流任务)中访问包变量与在脚本任务中访问包变量不同。对于脚本组件,首先需要打开脚本转换编辑器(右键单击组件并选择“编辑...”)。在“脚本”选项卡的“自定义属性”部分中,您可以以只读或读写方式输入(或选择)要使脚本可用的属性:
然后,在脚本本身中,变量将作为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,永远不会设置为有效值。因此,任何取消引用它的尝试都将失败。