我正在尝试为User::PrevMonth
数据类型String
的变量赋值,Script Task
但没有设置任何值。该变量尚未在Variables
属性窗格中设置为任何值。
我的脚本任务已在我的Control Flow中设置。在Script Task的属性中,我将两个变量设置为ReadWriteVariables
. 另一个变量似乎工作正常,它们被声明为Int32
这是我的脚本任务代码:
/*
Microsoft SQL Server Integration Services Script Task
Write scripts using Microsoft Visual C# 2008.
The ScriptMain is the entry point class of the script.
*/
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
namespace ST_7206cd3a4d734228b8d6860bdb6a59c9.csproj
{
[System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
#region VSTA generated code
enum ScriptResults
{
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
};
#endregion
public void Main()
{
//This will get the year as an int (e.g. 2013)
DateTime dLastYear = DateTime.Today.AddYears(-1);
int iLastYear = dLastYear.Year;
//This will get the month as an str (e.g. 04)
DateTime dLastMonth = DateTime.Today.AddMonths(-1);
string sLastMonth = dLastMonth.ToString("MM");
//Assign variables back to SSIS package
Dts.Variables["User::PrevMonth"].Value = sLastMonth;
Dts.Variables["User::Year"].Value = iLastYear;
//Return package success
Dts.TaskResult = (int)ScriptResults.Success;
}
}
}
String 数据类型的变量在成功执行包后不会改变它的值。这真的让我很烦恼,我觉得我已经检查了所有内容。
谁能发现我错过了什么?我猜这真的很愚蠢/很明显。
更新:
我已经Message Box
在内部使用Script Task
来查看变量值,它们正在显示正确的输出。