SSIS 变量“变量”的表达式评估失败。表达式中有错误

Posted

技术标签:

【中文标题】SSIS 变量“变量”的表达式评估失败。表达式中有错误【英文标题】:SSIS The expression for variable 'Variable' failed evaluation. There was an error in the expression 【发布时间】:2013-08-09 12:08:16 【问题描述】:

所以在这里我们有一个错误,我一直在我的 SSIS 包中,但我看不出该语句有什么问题。我什至从一个有效的项目中尝试了另一个 sql 语句,它仍然会引发错误。

系统是 VS 2005,在 XP 机器上运行 64 位调试器。该项目有一个脚本任务,然后是一个 sql 任务,脚本任务将月份值输出到一个变量 (Dts.Variables("monthName").Value = month),然后我用它在 SQL 中创建动态表名陈述。由于我正在尝试使 sql 任务阶段正常工作,因此我还没有进入 excel 工作表位。

所以我在包级别有一个名为 SQLTableCreate 的变量,其中我将属性设置为:

评估为 Expression = true 表达式 = "创建表 "+ @[user::monthName]+"(Column1 DATETIME,Column2 NVARCHAR(255),Column3 NVARCHAR(255),Column4 NVARCHAR(255),@ 987654325@ NVARCHAR(255),Column6 NVARCHAR(255),Column7 NVARCHAR(255),Column8 NVARCHAR(255),Column9 NVARCHAR(255),Column10NVARCHAR(255))"李>

当我构建包时,我得到:

保存包时发生非致命错误: 包错误:在变量集合中找不到变量“user::monthName”。该变量可能不存在于正确的范围内。 包错误:尝试解析表达式“”创建表“+@[user::MonthName]+”(Column1DATETIME,Column2NVARCHAR(255),Column3NVARCHAR(255),Column4NVARCHAR (255),Column5NVARCHAR(255),Column6NVARCHAR(255),Column7NVARCHAR(255),Column8NVARCHAR(255),Column9NVARCHAR(255),Column10NVARCHAR(255) ))” " 失败并返回错误代码 0xC00470A6。无法解析表达式。它可能包含无效元素或格式不正确。也可能存在内存不足错误。包错误:变量“SQLTableCreate”的表达式" 评估失败。表达式中有错误。

变量SQLTableCreate还有一个默认的SQL语句,它使用当前的excel连接管理器表名。当我将动态语句放在属性的表达式部分时,它会使用以下消息填充 SQLTableCreate 变量的 value 和 valuetype 属性:

变量“SQLTableCreate”的表达式评估失败。表达式中有错误。

【问题讨论】:

【参考方案1】:

正如错误所说的那样

在变量集合中找不到变量“user::monthName”

SSIS 中的内容区分大小写,而变量就是其中之一。让你的表情

“创建表”+@[User::monthName]+“(Column1 DATETIME,Column2 NVARCHAR(255),Column3 NVARCHAR(255),Column4 NVARCHAR(255),Column5 NVARCHAR(255),Column6 NVARCHAR(255) ,Column7 NVARCHAR(255),Column8 NVARCHAR(255),Column9 NVARCHAR(255),Column10 NVARCHAR(255))"

另外,我希望这张桌子设计只是一个样本,而不是真实的。缺少列名和强数据类型是您现阶段不需要承担的技术债务。

【讨论】:

对不起,我注意到之前将变量名称从 MonthName 更改为 monthName,但它仍然不起作用。是的,设计只是我查询的一个示例。 命名空间,User也是区分大小写的 这就是我需要的修复,谢谢。 Sheesh 坐在这儿,呆滞的眼睛试图找出问题所在!没有意识到这是区分大小写的。

以上是关于SSIS 变量“变量”的表达式评估失败。表达式中有错误的主要内容,如果未能解决你的问题,请参考以下文章

SSIS – 变量和表达式

SSIS变量属性中EvaluateAsExpression设置的作用

ssis 中的表达式不支持对象变量的数据类型

使用表达式生成器删除 SQL SSIS 变量中的结尾括号?

SSIS变量表达式 - 转换为字符串

008_SSIS 变量赋值的几种方式