Ich verwende SSIS und verwende eine Skriptaufgabe, um Dateigrößen von Dateien abzurufen, die in der for-each-Schleife verarbeitet wurden. Ich habe zwei Variablen.Abrufen der Dateigröße SSIS C#
FileFound: Dies ist der Name der Datei, in der Enumerator foreach Datei
FileFoundSize abgeholt - Dies ist eine Int64 Variable ohne Wert.
Meine Schritte sind:
Drag-und Script-Aufgabe in der foreach-Behälter
bearbeiten Script- Mein Code ist
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 }; } }
fallen Wenn ich diese Aufgabe ausführe bekomme ich die Ausnahme wurde durch das Ziel eines Aufrufs geworfen. Was ist falsch an meinem Skript?
Ihr Code ist einfach, meine erste beste Vermutung ist, dass Ihre FileFound-Variable nicht richtig aufgefüllt wird oder Ihr FileInfo-Befehl nicht auf die Datei zugreifen kann. Setzen Sie einen Breakpoint in Ihre Main() -Methode und führen Sie ihn durch. –
Sie korrigieren vielleicht. Muss die FileFound-Variable der vollständige Pfad der Datei einschließlich Dateiname und Erweiterung sein? Derzeit ist meine FileFound-Variable eine Zeichenfolge. – MaxPD
Danke @KyleHale. Ihr Vorschlag hat mir geholfen. – MaxPD