SSIS 中的字符串变量未填充 C# 脚本中生成的值



我有一个相当简单的要求,即从一个位置读取文件名并用文件名填充变量。我正在为此任务使用脚本任务。无论我尝试什么,文件名的值都不会填充在变量中。

我正在使用脚本任务编辑器。只有一个 ReadWriteVariables 将保存文件的全名。

这是我正在使用的脚本:

namespace ST_f8fd828f11b64932b15f2681e86c8d94
{
using System;
using System.Data;
using System.IO;
using Microsoft.SqlServer.Dts.Runtime;
[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
public void Main()
{
string p = "C:\Users\nthaku01\Desktop\NewEXPOLD.txt";
FileInfo fi = new FileInfo(p);
String fileName = fi.FullName;
Dts.Variables["User::vLastFilename"].Value = fileName.ToString();
MessageBox.Show(Dts.Variables["User::vLastFilename"].Value.ToString());
Dts.TaskResult = (int)ScriptResults.Success;
}
enum ScriptResults
{
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
};
#endregion
}
}

消息框显示文件的名称(和路径(。但是,该变量为空。

这个问题之前也详细讨论过,我尝试了所有技巧。但是,它对我不起作用。请帮忙!!

谢谢

纳夫尼特

我可以看到您的脚本任务的唯一问题是已经为脚本定义了ScriptResults。我重命名了您的enum部分和枚举器,并且使用变量将文本插入数据库表没有问题。这是我使用的脚本任务:

public void Main()
{
string p = "C:\Users\nthaku01\Desktop\NewEXPOLD.txt";
FileInfo fi = new FileInfo(p);
String fileName = fi.FullName;
Dts.Variables["User::vLastFilename"].Value = fileName.ToString();
MessageBox.Show(Dts.Variables["User::vLastFilename"].Value.ToString());
Dts.TaskResult = (int)eScriptResults.enumSuccess;
}
enum eScriptResults
{
enumSuccess = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
enumFailure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
};

我解决了。

实际上,作为SSIS新手,我不知道在运行时分配给变量的值不会显示在变量窗口中。

在变量窗口中,仅显示设计时提到的值。我必须创建一个派生列,并将用户变量的值分配给这个新创建的派生列。这解决了我面临的问题。

在"派生"列转换中:

output_LastFileName<-- 用户::vLast文件名

最新更新