警告:由于从数据库列中检索数据,可能会发生截断

时间:2019-04-03 17:33:14

标签: sql-server oracle oracle11g ssis ssis-2012

我正在使用SSIS从Oracle导入数据集。 SSIS给我警告:

  

由于从长度为28的数据库列“第三方”中检索到长度为25的数据流列“第三方”中的数据,因此可能会发生截断。”

警告没有意义。目标是一个SQL Server数据库,其中属性为[Third Party]nvarchar(255)

为什么工具会给我这个奇怪的错误?

我尝试更改nvarchar(max)的长度。这并没有改变。

select 
    case 
        when XTNL_HOS_FLG = 1 and VND_MG_APL_FLG = 0 
           then 'Host'          
        when XTNL_HOS_FLG = 0 and VND_MG_APL_FLG = 1 
           then 'Support or Manage' 
        when XTNL_HOS_FLG = 1 and VND_MG_APL_FLG = 1 
           then 'Host and (Support or Manage)'  
        else ''
    end  as "Third Party"
from 
    table1

3 个答案:

答案 0 :(得分:3)

您应该通过右键单击Source Target在“数据流任务”的“显示高级编辑器”中查看。 然后转到“输入和输出属性”选项卡,并检查列的长度。 在目标目标上执行相同的操作。

取决于获取数据的方式,列的类型和长度与数据库不同。

希望对您有帮助。

Mariana

答案 1 :(得分:0)

由于您使用SQL命令作为源,因此可以编辑命令并强制源列长度,以帮助OLEDB源识别它。您可以使用CAST函数来做到这一点:

select CAST(
    case 
        when XTNL_HOS_FLG = 1 and VND_MG_APL_FLG = 0 
           then 'Host'          
        when XTNL_HOS_FLG = 0 and VND_MG_APL_FLG = 1 
           then 'Support or Manage' 
        when XTNL_HOS_FLG = 1 and VND_MG_APL_FLG = 1 
           then 'Host and (Support or Manage)'  
        else ''
    end AS NCHAR(255)) as "Third Party"
from 
    table1

答案 2 :(得分:0)

我是这样做的:我使用命令 left(column,n) 来匹配输出文件。