【问题标题】:How can I debug and find the reason for stuck SSIS packages?如何调试并找出卡住 SSIS 包的原因?
【发布时间】:2018-01-04 13:44:54
【问题描述】:

我有一个 SSIS 包,它运行了很长时间。当我检查服务器中所有执行报告中的所有消息时,我看到它处于执行阶段正在开始。请检查以下屏幕截图。

请指导我如何调试它。提前致谢。

【问题讨论】:

    标签: sql-server ssis etl sql-server-data-tools


    【解决方案1】:

    警告信息是:

    查找...在缓存引用数据时遇到重复的引用键值。此错误仅在完全缓存模式下发生。要么删除重复的键值,要么将缓存模式更改为 PARTIAL 或 NO_CACHE。"

    请确认您在连接输入和参考表的列上没有重复值。

    如果您在查找表中连接col1,则运行查询以检查是否存在重复项,例如:

    SELECT col1,Count(*) FROM LookupTable
    GROUP BY col1
    HAVING COUNT(*)>1
    

    类似问题

    【讨论】:

      【解决方案2】:

      检查查找键上的重复项(而不是其各个列成员)。以下查询可用于识别重复记录并识别完美的查找键:

      select row_number() over(partition by /*LookUp Key*/ [Column1], [Column2], ..., [ColumnN]
                           order by /*LookUp Key*/ [Column1], [Column2], ..., [ColumnN]
                           ) row_
          ,*
      from [Database].schema.[Reference Table]
      --where 1=1 
      

      当“row_”列大于 1 时,表示您的 Lookup Key 引用了重复记录。为了解决这个问题,您可以为参考数据尝试另一个查找键,或者您可以使用上面查找键的 SSIS 查找任务中的以下代码获得唯一的参考数据记录:

      --Reference data without Lookup key duplicates
      with reference_data as (
      select   [Column1]
              ,[Column2]
              ,...
              ,[ColumnN]
      
              ,row_number() over(partition by /*LookUp Key*/partition by /*LookUp Key*/ [Column1], [Column2], ..., [ColumnN]
                           order by [Reference Data Unique Key] desc
                           ) row_
      from [Database].schema.[Reference Table]
      )
      select [Column1]
          ,[Column2]
          ,...
          ,[ColumnX]
      from reference_data
      where row_ = 1
      

      一般来说,查找键(不是组成它的列)必须是唯一的,这样不会提示此错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-02
        • 1970-01-01
        • 1970-01-01
        • 2021-10-14
        • 2020-09-24
        相关资源
        最近更新 更多