我在SSIS 2008 R2中使用执行进程任务。我有一个变量idVar
,其数据类型为 Int32 。我需要将此变量传递给任务的属性Arguments
,以便进程可执行文件可以将此变量作为参数。我使用表达式将@idVar
分配给Arguments
。
现在系统说我需要将Int转换为String,所以我在表达式构建器
中使用了以下表达式(DT_STR, 10, 1252) @[User::IdVar]
它出现以下错误:
Expression cannot be evaluated.
Additional information:
The expression "(DT_STR, 10, 1252) @[User:IdVar]" has a result type of "DT_STR",
which cannot be converted to a supported type.
(Microsoft.DataTransformationServices.Controls)
将数字类型转换为字符串的正确方法是什么?
答案 0 :(得分:33)
Arguments
属性需要数据类型{{1而不是DT_WSTR
。
在 Business Intelligence Development Studio(BIDS)2008 R2 中创建SSIS包,并将其命名为 DT_STR
。使用以下信息创建包变量。
SO_13177007.dtsx
将执行流程任务拖放到控制流标签上,并将其命名为传递参数
双击执行流程任务以打开 Name Scope Data Type Value
------ ------------ ---------- -----
IdVar SO_13177007 Int32 123
。单击表达式页面,然后针对表达式属性单击省略号按钮以查看 Execute Process Task Editor
。
在属性表达式编辑器上,选择属性 Property Expression Editor
,然后针对该属性单击省略号按钮以打开< EM> Arguments
在 Expression Builder 上,输入以下表达式,然后单击 Expression Builder
。此表达式尝试将变量 Evaluate Expression
中的整数值转换为字符串数据类型。
IdVar
单击评估表达式将显示以下错误消息,因为执行流程任务上的Arguments属性需要数据类型 (DT_STR, 10, 1252) @[User::IdVar]
的值
要解决此问题,请按如下所示更新表达式,将整数值转换为数据类型 DT_WSTR
。单击评估表达式将在评估值文本区域中显示该值。
DT_WSTR
要了解SSIS中数据类型 (DT_WSTR, 10) @[User::IdVar]
和 DT_STR
之间的差异,请阅读MSDN上的文档Integration Services Data Types。以下是有关这两种字符串数据类型的文档中的引用。
以null结尾的ANSI / MBCS字符串,最大长度为8000个字符。 (如果列值包含其他空终止符,则在第一个空值出现时将截断该字符串。)
以null结尾的Unicode字符串,最大长度为4000个字符。 (如果列值包含其他空终止符,则在第一个空值出现时将截断该字符串。)
答案 1 :(得分:1)
表达:&#34;总计数:&#34; +(DT_WSTR,11)@ [User :: int32Value]
表示Int32 - (-2,147,483,648至2,147,483,647)
答案 2 :(得分:0)
表达式: “总计数:”+(DT_WSTR,5)@ [User :: Cnt]