如果源表中的列在目标表中没有对应的列,或者至少故意决定不包含它,如何导致 SSIS 2017 包失败?
我在两个名为 test 的表格中都制作了一个表格,其中有一列 testcol。SSIS 传输数据。现在我将 testcol2 添加到源,但没有添加到目标。该作业仍然按照今天的处理方式运行良好,但我希望它失败并报告未映射的列错误。
如果源表中的列在目标表中没有对应的列,或者至少故意决定不包含它,如何导致 SSIS 2017 包失败?
我在两个名为 test 的表格中都制作了一个表格,其中有一列 testcol。SSIS 传输数据。现在我将 testcol2 添加到源,但没有添加到目标。该作业仍然按照今天的处理方式运行良好,但我希望它失败并报告未映射的列错误。
在对这个问题进行了更多研究之后,看起来这ValidatExternalMetadata
并不能满足您的需求。它只会跟踪所选列上发生的元数据更改。
基于此,我认为 SSIS 中没有选项可以执行此操作,您必须将自定义验证添加到包中,例如:
SELECT Count(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ?
)。如果计数不相同,则抛出异常。SELECT Count(*) FROM Information_schema.Column T1 LEFT JOIN Source Columns T2 ON T1.COLUMN_NAME = T2.Column_name WHERE T2.Column_Name IS NULL
)然后检查结果是否 > 0 然后抛出异常。您可以通过将 OLEDB SourceValidatExternalMetadata
属性设置为True
.
添加新列时,它应该引发类型异常。
VS_NEEDSNEWMETADATA
请注意,执行包时这可能需要额外的时间。
如需更多信息,请参阅: