我有一个SSIS包,它将数据从一台服务器上的SQL SERVER 2008 TABLE(表A)获取到另一台服务器上的SQL SERVER 2008表(表B),然后转换数据并将其移动到另一个表。 / p>
我正在使用数据流任务来执行上述操作。 两个表中的2列,第1列和第2列的数据类型分别是varchar(60)和varchar(50)。
我需要将表B中的数据作为临时表导入到最终表(表C)。上述2列的数据类型在表C中的类型为int。我正在转换上面的2列当我导入数据时,为int数据类型,我有一个数据流任务,其中OLEDB源 有以下查询:
SELECT CAST(COLUMN1 AS INT),COLUMN2 AS INT) 从表B
您好
我有2个SQL表,即OLEDB数据源,一个具有正确的行(已成功转换为int)通过绿色箭头,另一个具有错误的行(抛出错误)通过红色箭头。它被配置为仅在转换错误时重定向行,当发生截断错误时它具有“失败的组件”选项)oledb目标表具有与源表相同的结构。
当我运行将数据从源表导入目标表的数据流任务时,出现错误 “转换规范的无效字符值”或数据转换错误。 我不希望它抛出错误,而是将错误的行重定向到与目标表具有相同结构的错误表,具有相同结构的源表具有错误号和列名
使用数据转换任务并重定向错误行是不是一个好主意,通过在转换时配置错误输出以及截断或仅转换,或仅在发生转换错误时转换值和重定向行? / p>
答案 0 :(得分:0)
由于SQL引擎中发生CAST错误,因此无法使用SSIS重定向这些行。我会使用数据转换任务并重定向错误行。
FWIW我不是"错误表"的粉丝。 - 根据我的经验,没有人看着他们。我更喜欢"积极的负载"样式(甚至名称很酷),你强制所有行,并让分析师解释差异。他们很快就解决了严重问题,因为他们扭曲了结果。总会有一个低级别的琐碎错误,最好不要挂断,生命如此短暂而且全部...