SSIS-具有包含Convert的SQL语句的数据源



我已经创建了一个SQL OLEDB数据源(SQL Server),并且我有以下命令文本:

select replace(convert(varchar(10), dob, 111), '/', '-') As DOB FROM Person

我在执行时收到一个警告,上面写着:[OLE DB Source[1]]警告:由于从长度为8000的数据库列"DOB"检索数据到长度为10的数据流列"DOB",可能会发生截断。

当我尝试将外部列从8000更改为10(如查询中所述)时,设计器会自动将其更改回。我认为外部列表示数据源中的元数据。数据源中的dob(参见上面的查询)是varchar(10)。为什么它必须有8000的长度?我对SSIS没有太多经验。

我找到了解决方案。我不得不这么做:

select cast(replace(convert(varchar(10), dob, 111), '/', '-') As varchar(10)) As DOB from Person

还有另一种解决方法可以克服这一问题:您可以忽略错误,并通过在"源"块的"错误输出"选项卡中设置适当的属性来从"截断"错误中执行包。

最新更新