SSIS - 错误和截断有什么区别?

SSIS - What is difference between Error and Truncation?

"Error"和"Truncation"配置SSIS组件错误页面有什么区别?特别是,与截断不同的 "Error" 会出现哪些类型的不同错误?

"Error" 表示,"I can't do this"

"Truncation" 表示,"I can do this, but I'm going to have to cut the string short at a certain point."

错误分为两类之一:错误或截断。

  • 错误 表示明确的失败,并生成 NULL 结果。此类错误可能包括数据转换错误或表达式计算错误。

例如:

尝试将包含字母字符的字符串转换为数字会导致错误。由于非法转换和不兼容的数据类型,数据转换、表达式求值以及将表达式结果赋值给变量、属性和数据列可能会失败。

  • 截断 没有错误那么严重。截断生成的结果可能是可用的,甚至是需要的。您可以选择将截断视为错误或可接受的条件。

例如:

如果您要将 15 个字符的字符串插入到只有一个字符宽的列中,您可以选择截断该字符串。

截断是 "What do I do if I try to insert a 250 character string into a varchar(50) field?" 或 "What do I do if the metadata says DT_STR with a length of 10, but the data source gives me something with a length of 20?" 一些导入在数据被截断的情况下是正确的,因此通常希望静默忽略截断。

错误是,"What do I do if I try to insert the string 'ABCXYZ' into an integer field?" or, "What do I do if I try to insert the string '2015-02-31' into a date field?", or "What do I do if I try to insert NULL into a NOT NULL field." 通常是数据类型错误,但也可能包括约束错误(唯一性、外键等)。 ).它也将是截断未涵盖的任何内容。我见过的大多数错误都来自目的地而不是来源。字段级别的源错误可能发生在不同的编码上,尤其是 unicode 与非 unicode。当源失败时,通常不是单个字段的失败,而是整个 table、视图或查询的失败,但是,由于 SQL 的工作方式,但如果您的源是一个平面文件。我们有一家供应商决定更改其文件中字段的顺序,而 SSIS 对此反应不佳。