SSIS将脏/失败的行移动到文件或表

时间:2014-06-03 20:22:19

标签: ssis

我有一个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>

1 个答案:

答案 0 :(得分:0)

由于SQL引擎中发生CAST错误,因此无法使用SSIS重定向这些行。我会使用数据转换任务并重定向错误行。

FWIW我不是"错误表"的粉丝。 - 根据我的经验,没有人看着他们。我更喜欢"积极的负载"样式(甚至名称很酷),你强制所有行,并让分析师解释差异。他们很快就解决了严重问题,因为他们扭曲了结果。总会有一个低级别的琐碎错误,最好不要挂断,生命如此短暂而且全部...