我创建了一个SQL OLEDB数据源(SQL Server),我有以下命令文本:
select replace(convert(varchar(10), dob, 111), '/', '-') As DOB FROM Person
我收到执行警告:[OLE DB Source [1]]警告:由于从数据库列“DOB”检索数据长度为8000到数据流列“DOB”的长度,可能会发生截断10.。
当我尝试将外部列从8000更改为10(如查询中所述)时,设计器会自动将其更改回来。我认为外部列表示数据源中的元数据。数据源中的dob(参见上面的查询)是varchar(10)。为什么它必须有8000的长度?我对SSIS没有很多经验。
答案 0 :(得分:4)
我找到了解决方案。我不得不这样做:
select cast(replace(convert(varchar(10), dob, 111), '/', '-') As varchar(10)) As DOB from Person
答案 1 :(得分:2)
还有另一种解决方法可以解决这个问题:你可以通过在'Source'块的'Error output'选项卡中设置相应的属性来忽略错误并从'Truncation'错误执行包。