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

use*_*255 4 sql-server oracle ssis oracle11g 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
Run Code Online (Sandbox Code Playgroud)

小智 5

通过右键单击Source Target在数据流任务中的“显示高级编辑器”中查找。然后转到“输入和输出属性”选项卡,并检查列的长度。

在目标目标上执行相同操作。

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


Had*_*adi 1

由于您使用 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
Run Code Online (Sandbox Code Playgroud)