【发布时间】:2016-04-28 20:15:21
【问题描述】:
我正在使用 SSIS 并使用脚本任务来检索在 for-each 循环中处理的文件的文件大小。我有两个变量。
FileFound:这是在 foreach 文件枚举器中选取的文件的名称
FileFoundSize - 这是一个没有值的 Int64 变量。
我的步骤是:
在 for-each 容器中拖放脚本任务
-
编辑脚本-我的代码是
using System; using System.IO; using System.Data; using Microsoft.SqlServer.Dts.Runtime; using System.Windows.Forms; namespace ST_7068b53f6bf04efd812e51a1aee0c396 { Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute] public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase { public void Main() { FileInfo fileInfo; fileInfo = new FileInfo(Dts.Variables["User::FileFound"].Value.ToString()); Dts.Variables["User::FileFoundSize"].Value = fileInfo.Length; Dts.TaskResult = (int)ScriptResults.Success; } enum ScriptResults { Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success, Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure }; } }
当我执行这个任务时,我得到一个调用的目标抛出了异常。 我的脚本有什么问题?
【问题讨论】:
-
您的代码很简单,我的第一个最佳猜测是您的 FileFound 变量没有正确填充,或者您的 FileInfo 命令无法访问该文件。在您的 Main() 方法中放置一个断点并遍历它。
-
你可能是对的。 FileFound 变量是否需要是文件的完整路径,包括文件名和扩展名?目前,我的 FileFound 变量是一个字符串。