如何调试并找到卡住SSIS包的原因?

时间:2018-01-04 13:44:54

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

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

enter image description here

请指导我如何调试这个。提前谢谢。

2 个答案:

答案 0 :(得分:1)

警告信息为:

  

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

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

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

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

类似问题

答案 1 :(得分:0)

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

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时,表示您的查阅关键字引用了重复的记录。为了解决此问题,您可以尝试使用其他查找参考数据的查找关键字,或者使用上面的查找关键字的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

通常,查找键(不是组成它的列)必须唯一,以免提示此错误。