相关疑难解决方法(0)

分配给变量"User :: de_sters"的值的类型与当前变量类型不同

我有一个变量de_sters,一个字符串类型变量,因为它在我的SSIS包中定义,它的范围是SSIS包,我需要fill使用一个表中的几行的值,使用Execute Sql Task包.

底线是我有一个"执行Sql任务"包,在proprieties - >"Sql Statement"我写道:

declare @s varchar(max) = '' 
select @s =  case when @s <> '' 
                  then  @s + ',''' + employer_name + '''' 
                  else   @s + '''' + employer_name+ ''''
                  end 
from employers
select @s as Result
Run Code Online (Sandbox Code Playgroud)

然后,在Result Set我选择Single Row(首先我运行我的选择,我看到它只返回一行).然后在tab Result Set(左侧)我在Result Name字段中写道Result(来自我之前的sql语句的别名)和Variable Name我写的文件User::de_sters.

但是当我运行sql任务时,它给了我

The type of the value being assigned to variable "User::de_sters"
differs …
Run Code Online (Sandbox Code Playgroud)

sql-server ssis

6
推荐指数
1
解决办法
8248
查看次数

在ssis中为单行结果集分配值,从而在SSIS 2012中给出错误

我试图从SQL Server的表中获取CSV ID并将结果分配给变量.下面是我在执行SQL任务中放入的sql

set nocount on
declare @csv varchar(max) = ''
select @csv = @csv + cast(companyid as varchar(10)) + ',' from company where isprocessed = 0
select substring(@csv,1,len(@csv) - 1) as companyids
Run Code Online (Sandbox Code Playgroud)

正如您可以看到它在t-sql中获取字段的csv的简单而标准的方法.它在查询窗口中完美运行,但在我在SSIS 2012中运行任务时抛出以下错误

[执行SQL任务]错误:值类型(__ComObject)只能转换为Object类型的变量.

[执行SQL任务]错误:为变量"sCSVCompanyIds"赋值时发生错误:"分配给变量"User :: sCSVCompanyIds"的值(DBNull)的类型与当前变量类型(String)不同.在执行期间可能不会改变类型.变量类型是严格的,除了Object类型的变量."

以下是执行SQL任务的设置

  1. 在" 常规"选项卡中,"结果集"项目设置为单行
  2. 在" 结果集"选项卡中,"结果名称"设置为0(我也尝试将其设置csvids为选择列表中的别名列名称),并将"变量名称"设置为User::sCSVCompanyIds

我不知道为什么它不起作用.在浪费了这么多时间之后,我通过将结果作为Full Row集返回(同样的SQL总是返回1行1列)并为每个循环容器添加一个循环抛出结果集(将始终迭代)只有一次出于显而易见的原因)并将结果集的字段分配给变量.它适用于我,但应该有简单的方法.我错过了什么?

sql-server ssis ssis-2012

2
推荐指数
1
解决办法
7402
查看次数

标签 统计

sql-server ×2

ssis ×2

ssis-2012 ×1