gpt4 book ai didi

sql-server - 检测源中未映射到目标的新列并在 SSIS 中失败

转载 作者:行者123 更新时间:2023-12-03 12:40:07 25 4
gpt4 key购买 nike

如果源表中的列在目标表中没有对应的列,或者至少是故意决定不包含它,我如何导致 SSIS 2017 包失败?

我在两个名为 test 的表中创建了一个表,其中包含一列 testcol。 SSIS 传输数据。现在我向源添加了一个 testcol2,但没有添加到目标。作业仍然按照今天的处理方式运行良好,但我希望它失败并报告未映射的列错误。

最佳答案

更新1

在对这个问题进行更多研究之后,看起来 ValidatExternalMetadata 并没有满足您的要求。 它只会跟踪所选列上发生的元数据更改

基于此,我认为 SSIS 中没有执行此操作的选项,您必须将自定义验证添加到包中,例如:

  1. 声明一个包含列数的变量(当您设计包时),然后添加一个执行 SQL 任务来检查当前列数 (SELECT Count(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ? )。如果计数不相同,则抛出异常。
  2. 创建一个包含源表列的引用表并添加一个执行 SQL 任务以检查是否有新添加的列(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 然后抛出异常。
  3. 使用执行 SQL 任务从数据库架构审计表中读取:

初始答案

您可以通过将 OLEDB 源 ValidatExternalMetadata 属性设置为 True 来实现这一点。

当添加新列时,它应该抛出一个类型的异常。

VS_NEEDSNEWMETADATA

请注意,执行包时这可能需要额外的时间。

更多信息,请引用:

关于sql-server - 检测源中未映射到目标的新列并在 SSIS 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54837915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com