我有一个非常简单的要求,即从某个位置读取文件名并使用文件名填充变量。我正在为此任务使用脚本任务。无论我怎么尝试,变量中都不会填充文件名的值。
我正在使用脚本任务编辑器。只有一个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
}
}
MessageBox显示文件的名称(和路径)。但是,该变量为空。
此问题也已在前面进行了详细讨论,我尝试了所有技巧。但是,它对我不起作用。请帮忙!
谢谢
Navneet
答案 0 :(得分:0)
我能看到的脚本任务的唯一问题是已经为脚本定义了ScriptResults
。我重命名了enum
部分和枚举器,并且使用该变量将文本插入db表没有问题。这是我使用的脚本任务:
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
};
答案 1 :(得分:0)
我解决了。
实际上,作为SSIS的新手,我不知道在运行时将值分配给变量的情况不会在变量窗口中显示。
在变量窗口中,仅显示设计时提到的值。我必须创建一个派生列,并将用户变量的值分配给这个新创建的派生列。这解决了我面临的问题。
在“派生”列转换中:
output_LastFileName <-用户:: vLastFilename