好的...我有一个相对简单的 SSIS 包(DTSDesigner100、Visual Studio 2008 版本 9.0.30729.4462 QFE、.NET Framework 3.5 SP1)。在包的 SSIS 控制流的末尾是一个文件系统任务,它是一个重命名文件操作。
此文件系统任务的属性如下:
- IsDetinationPathVariable:真
- 目标变量:用户::输出文件名
- 覆盖目标:真
- 描述:文件系统任务
- 操作:重命名文件
- IsSourcePath 变量:假
- SourceConnection:Excel 模板复制目标
没有定义的表达式。如您所见,我将 Destination 分配为变量 User::OutputFileName。那么让我们看看这个变量......
- 名称:输出文件名
- 范围:包
- 数据类型(ValueType):字符串
- 价值:
- 命名空间:用户
- EvaluateAsExpression:真
- 只读:错误
- 表达式:(见下文)
.
"\\\\SERVER\\Folder\\" + "MyAwesomeExcelWorkbook_"
+ (DT_WSTR,4)DATEPART("year", GETDATE())+ "-"
+ RIGHT("0" + (DT_WSTR,2)DATEPART("mm", GETDATE()), 2) + "-"
+ RIGHT("0" + (DT_WSTR,2)DATEPART("dd", GETDATE()), 2) + "-"
+ RIGHT("0" + (DT_WSTR,2)DATEPART("hh", GETDATE()), 2) + "-"
+ RIGHT("0" + (DT_WSTR,2)DATEPART("mi", GETDATE()), 2) + "-"
+ RIGHT("0" + (DT_WSTR,2)DATEPART("ss", GETDATE()), 2)
+ ".xlsx"
所以我可以成功地评估这个表达式。正如人们所期望的那样,每次包运行(和失败)时,它的 Value 都是评估表达式的值。
当我运行包时,会发生以下情况......
- 前面的步骤运行成功。
- 文件系统任务启动,文件成功重命名。
- 但是,由于文件系统任务失败并出现以下错误,包现在失败:
.
Error: 0xC001F009 at Package: The type of the value being assigned to variable "User::OutputFileName" differs from the current variable type. Variables may not change type during execution. Variable types are strict, except for variables of type Object.
Task failed: Rename Excel Workbook
Error: 0xC0019001 at Rename Excel Workbook: The wrapper was unable to set the value of the variable specified in the ExecutionValueVariable property.
Warning: 0x80019002 at Package: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED. The Execution method succeeded, but the number of errors raised (4) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
SSIS package "Package.dtsx" finished: Failure.
显然,我在这里忘记了一些小细节。现在,我已经尝试将整个表达式转换为 DT_WSTR,512 - 计算结果很好,但文件系统任务仍然会失败并出现同样的错误。
谁能指出我忽略的细节?提前致谢。