SSISを使用しており、スクリプトタスクを使用してfor-eachループで処理されたファイルのファイルサイズを取得しています。私には2つの変数があります。ファイルサイズの取得SSIS C#
FileFound:これは、ファイルの名前は、foreachのファイル列挙子
FileFoundSizeで拾っている - これは値を持たないInt64の変数です。
私の手順は以下のとおりです。
ドラッグアンドでスクリプトタスクをドロップするために、各コンテナ
編集Script-私のコードは
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変数は文字列です。 – MaxPD
ありがとう@KyleHale。あなたの提案は私を助けました。 – MaxPD