16

我在 SSIS 2008 R2 中使用执行进程任务。我有一个idVar数据类型为Int32的变量。我需要将此变量传递给Arguments任务的属性,以便进程可执行文件可以将此变量作为参数。我使用表达式分配@idVarArguments.

现在系统说我需要将 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)

将数字转换为字符串的正确方法是什么?

错误

4

3 回答 3

39

问题原因:

Arguments“控制流”选项卡上可用的“执行流程任务”中的属性需要数据类型的值,而不是。DT_WSTRDT_STR

SSIS 2008 R2 包说明了问题和修复:

在Business Intelligence Development Studio (BIDS) 2008 R2中创建一个 SSIS 包,并将其命名为SO_13177007.dtsx. 使用以下信息创建一个包变量。

Name   Scope        Data Type  Value
------ ------------ ---------- -----
IdVar  SO_13177007  Int32      123

变量窗格

将Execute Process Task拖放到Control Flow选项卡上,并将其命名为Pass arguments

控制流选项卡

双击执行流程任务以打开Execute Process Task Editor. 单击表达式页面,然后单击表达式属性上的省略号按钮以查看.Property Expression Editor

执行流程任务编辑器

属性表达式编辑器上,选择属性Arguments并单击属性上的省略号按钮以打开Expression Builder.

属性表达式编辑器

表达式生成器上,输入以下表达式并单击Evaluate Expression。此表达式尝试将变量中的整数值转换IdVar为字符串数据类型。

(DT_STR, 10, 1252) @[User::IdVar]

表达式生成器 - DT_STR

单击Evaluate Expression将显示以下错误消息,因为Execute Process Task上的 Arguments 属性需要一个 data type 的值DT_WSTR

整数到 ANSI 字符串转换错误

要解决此问题,请更新如下所示的表达式以将整数值转换为数据类型DT_WSTR。单击Evaluate Expression将在Evaluated value文本区域中显示该值。

(DT_WSTR, 10) @[User::IdVar]

表达式生成器 - DT_WSTR

参考:

DT_STR要了解数据类型和DT_WSTRSSIS 中的差异,请阅读 MSDN 上的文档集成服务数据类型。以下是文档中关于这两种字符串数据类型的引用。

DT_STR

一个以 null 结尾的 ANSI/MBCS 字符串,最大长度为 8000 个字符。(如果列值包含额外的空终止符,则字符串将在出现第一个空值时被截断。)

DT_WSTR

一个以 null 结尾的 Unicode 字符串,最大长度为 4000 个字符。(如果列值包含额外的空终止符,则字符串将在出现第一个空值时被截断。)

于 2012-11-01T12:59:14.377 回答
4

表达式:“总计数:” + (DT_WSTR, 11)@[User::int32Value]

对于 Int32 -- (-2,147,483,648 到 2,147,483,647)

于 2018-03-28T07:39:47.977 回答
0

表达式:“总计数:” + (DT_WSTR, 5)@[User::Cnt]

于 2017-05-16T14:59:36.980 回答