我正在設置一個SSIS包,它接受一個平面文件並將其內容加載到臨時表中。從那裏它需要獲取該文件的文件名並將其保存到另一個表中的字段以及其中一行數據。我通過使用執行SQL任務來執行存儲過程來加載數據。此過程使用的文件名作爲輸入參數(只是這樣我就可以把它寫入到表)......我增加了執行SQL任務前的腳本任務執行以下操作:將文件名傳遞給SSIS中的執行SQL任務
public void Main()
{
string inputFolder;
string fileName;
inputFolder = Dts.Variables["SourceFolder"].Value.ToString();
// MessageBox.Show(inputFolder);
string[] foundFiles = null;
foundFiles = System.IO.Directory.GetFiles(inputFolder);
if (foundFiles.Length > 0)
{
fileName = foundFiles[0];
Dts.Variables["ProcessedFileName"].Value = System.IO.Path.GetFileName(fileName);
// MessageBox.Show(fileName);
// MessageBox.Show(System.IO.Path.GetFileName(fileName));
}
Dts.TaskResult = (int)ScriptResults.Success;
}
的「ProcessedFileName」變量是SSIS包中的全局變量,以及「SourceFolder」變量。
執行SQL任務我設置使用執行直接輸入:
DECLARE @StoredProcedure varchar(100) = ?;
DECLARE @ProcessedFileName varchar(100) = ?;
EXEC ? ?;
參數映射到變量StoredProcedure的和ProcessedFileName。
問題是,當我運行它時,它告訴我「沒有給出一個或多個必需參數的值」。爲什麼會這樣呢?