如果源表中的列在目标表中没有对应的列,或者至少有意决定不包含它,如何使SSIS 2017程序包失败?
我在两个表中都创建了一张名为testcol的表。 SSIS传输数据。现在,我将testcol2添加到源中,但未添加到目标中。这项工作仍然可以按今天的方式运行,但是我希望它失败并报告未映射的列错误。
答案 0 :(得分:1)
在对此问题进行了更多研究之后,看来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 Source ValidatExternalMetadata
属性设置为True
来实现。
添加新列时,应引发类型异常。
VS_NEEDSNEWMETADATA
请注意,执行程序包可能需要更多时间。
有关更多信息,请参阅: