0

我的 SSIS 包失败并出现以下错误:

分配给变量的值的类型与当前变量类型不同。

我声明了一个字符串类型的变量,SQL 表中对应的列名是 varchar(33)。如果我使用数据类型作为对象,它会成功,但我需要在连接字符串的表达式中使用变量值,并且不支持对象类型。

请帮助我如何进行。

注意:我的 SSIS 包的目标是从表中获取服务器列表(这就是它失败的地方),并在所有服务器中使用 foreach 循环容器执行一些脚本。

4

3 回答 3

2

如果我没看错你的问题,你真正需要的是两个变量:一个是从 SQL 表接收数据的 Object 变量,另一个是你将传递给 ForEach 循环的字符串值。

它们之间的区别在于您的 Object 变量可以容纳多行,而您的 String 值一次只能容纳一个项目。您将要做的是声明一个 Object 变量,用服务器列表填充它,然后使用 ForEach 循环遍历列表中的每个项目,一次将一个值提供给您的 String 变量。然后,您将使用 String 变量来设置您提到的脚本,并在每个服务器上执行一次。

为了进一步阅读,这里有一个很好的演练,它将为您提供我正在谈论的屏幕截图和示例。

于 2015-08-14T13:04:18.357 回答
1

我知道我很晚才回复这个帖子,下面的解释是为将来看到这个的人准备的。我最近遇到了这种情况。我做了以下

首先是我的对象类型的记录集目标变量。使用 For Each Loop 容器,我将每一行数据(具有多列)映射到 OBJECT 类型的变量。当我对变量使用除 OBJECT 数据类型以外的任何其他数据类型时,我得到如下错误

Error: ForEach Variable Mapping number 3 to variable "User::EMPID" cannot be applied. 

然后我在执行 SQL 任务中使用了对象类型的变量,它成功插入数据而没有任何错误。

拇指规则:将记录集目标输出映射到 OBJECT 类型的变量。

于 2016-08-24T04:27:44.750 回答
0

我最近遇到了这种情况。我做了以下

首先是我的对象类型的记录集目标变量。使用 For Each Loop 容器,我将每一行数据(具有多列)映射到 OBJECT 类型的变量。当我对变量使用除 OBJECT 数据类型以外的任何其他数据类型时,我得到如下错误

Error: ForEach Variable Mapping number 3 to variable "User::EMPID" cannot be applied. 

然后我在执行 SQL 任务中使用了对象类型的变量,它成功插入数据而没有任何错误。

拇指规则:将记录集目标输出映射到 OBJECT 类型的变量。

于 2016-08-23T12:54:01.590 回答